我有一个使用sql-alchemy的flask应用程序,并且flask迁移来处理数据库更改。每次我进行烧瓶迁移以创建Alembic更新数据库的脚本时,该脚本都包含创建数据库中已经存在的外键的命令。
models.py中的表定义是
nordvpn whitelist add port 22
在迁移数据库更新脚本中用于创建外键的行是
class Airline(db.Model):
__tablename__ = 'Airlines'
AirlineID = db.Column(db.Integer,primary_key=True)
AirlineshortCode = db.Column(db.String(3),index=True,unique=True,nullable=False)
FullName = db.Column(db.String(256),unique=False,nullable=True)
ShortName = db.Column(db.String(64),nullable=True)
class CabinClass(db.Model):
__tablename__ = 'CabinClasses'
CabinClassID = db.Column(db.Integer,primary_key=True)
AirlineshortCode = db.Column(db.ForeignKey("Airlines.AirlineshortCode"),nullable=True)
CabinClassShortCode = db.Column(db.String(32),nullable=False)
CabinClassname = db.Column(db.String(64),nullable=True)
每次创建迁移脚本时都会生成此行,从而在CabinClasses表中导致多个外键条目:
我看到创建的每个外键的名称都不同,并且数据库迁移脚本中的 op.create_foreign_key(None,'CabinClasses','Airlines',['AirlineshortCode'],['AirlineshortCode'])
命令将该名称表示为create_foreign_key
。我相信如果您使用的是自动命名方案(我相信默认情况下会发生这种情况
对于使用自动命名方案的设置,例如所述 在“配置约束命名约定”中,此处的名称可以是“无”, 因为事件侦听器会将名称应用于约束对象 与表格关联时
https://alembic.sqlalchemy.org/en/latest/naming.html
有人能识别出什么导致每次我更新数据库时都会创建这些外键吗?