SQLAlchemy中的外键约束

问题描述

| 我正在使用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问题对于强制执行外键非常有用。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...