我正在使用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'))
Run Code Online (Sandbox Code Playgroud)
但是,我在other_model属性中放置的内容似乎并不重要,似乎非常乐意将它提交到数据库,即使没有Model1具有该实例的实例也是如此Name.
看起来答案在我使用的数据库(SQLite)中,而不是 SQLAlchemy 中。SQLite 版本 <3.6.1 (AFAIK) 不支持外键约束。
由于我使用的是 Windows,我能够访问pysqlite2 页面,打包的安装程序具有版本 3.7.6.2 sqlite,然后最终的实现得到了有关sqlite 引擎和方言的 SQLAlchemy 页面的帮助。这个问题也与升级过程相关。
最后,SQLite 引擎在决定是否强制执行外键约束时有点不稳定,而这个 SO 问题在强制执行外键约束时非常有用。
| 归档时间: |
|
| 查看次数: |
3271 次 |
| 最近记录: |