问题描述
|
我正在使用SQLAlchemy的ORM端,并且已经定义了我的其中一列以使用以下命令与另一个模型具有外键关系:
Base = declarative_base()
class Model1(Base):
__tablename__ = \'m1\'
Name = Column(String,primary_key = True)
info = Column(String)
class Model2(Base):
__tablename__ = \'m2\'
Name = Column(String,primary_key = True)
info = Column(String)
other_model = Column(String,ForeignKey(\'m1.Name\'))
但是,我在other_model
属性中添加的内容似乎并不重要,即使不存在具有Name
的Model1
实例,将其提交到数据库似乎也很高兴。
解决方法
答案似乎在我使用的数据库中(SQLite),而不是SQLAlchemy。 <3.6.1(AFAIK)以下版本的SQLite不支持外键约束。
因此,答案与关于外键和SQLAlchemy的答案非常相似。
当我使用Windows时,我能够转到pysqlite2页面,打包的安装程序的版本为3.7.6.2 sqlite,然后在sqlite引擎和方言上的此SQLAlchemy页面有助于最终实现。这个SO问题在升级过程中也很重要。
最后,在决定是否强制执行外键约束时,SQLite引擎有点气质,因此,这种SO问题对于强制执行外键非常有用。