为了账号安全,请及时绑定邮箱和手机立即绑定

flask-sqlalchemy 字段关联问题(sqlalchemy.exc.NoForeignKeysError)

flask-sqlalchemy 字段关联问题(sqlalchemy.exc.NoForeignKeysError)

小唯快跑啊 2019-04-16 20:26:07
错误信息:sqlalchemy.exc.NoForeignKeysError:Couldnotdeterminejoinconditionbetweenparent/childtablesonrelationshipversion_patch.patchcode-therearenoforeignkeyslinkingthesetables.EnsurethatreferencingcolumnsareassociatedwithaForeignKeyorForeignKeyConstraint,orspecifya'primaryjoin'expression.代码:classtrans_inst(db.Model):__tablename__='TRANS_INST'__table_args__=SCHEMA#查询带上库名前缀TRANS_ID=db.Column(db.INTEGER,primary_key=True)TITLE=db.Column(db.VARCHAR(255),nullable=False)VERSION_ID=db.Column(db.INTEGER)PROJECT_ID=db.Column(db.INTEGER,nullable=False)TEMPLET_ID=db.Column(db.INTEGER)STAFF_ID=db.Column(db.INTEGER,nullable=False)CREATE_DATE=db.Column(db.DATE)STATE=db.Column(db.CHAR(1))PATCH_ID=db.Column(db.INTEGER,db.ForeignKey('version_patch.PATCH_ID'))UP_TRANS_ID=db.Column(db.INTEGER)#子单/关联单IDTYPE=db.Column(db.CHAR(1))#子单关联单类型SUBMITTER=db.Column(db.INTEGER)classversion_patch(db.Model):"""补丁(版本)定义表"""__tablename__='VERSION_PATCH'__table_args__=SCHEMA#查询带上库名前缀PATCH_ID=db.Column(db.INTEGER,primary_key=True)VERSION_ID=db.Column(db.INTEGER)#版本标识UP_PATCH_ID=db.Column(db.INTEGER)PATCH_CODE=db.Column(db.VARCHAR(255))patchcode=db.relationship("trans_inst")
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

不知道你的数据库里面的version_patch是大写还是小写的,如果看文档的话你会发现db.ForeignKey中的"表名.字段名","表名"是数据库中的表名,而不是flask-sqlalchemy中的model名。按照你贴出的代码,如果你数据库中version_path不区分大小写,可以考虑换一下Model名,如:VersionPatch试试。
                            
查看完整回答
反对 回复 2019-04-16
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

自己解决:
如下写法
classtrans_inst(db.Model):
__tablename__='TRANS_INST'
__table_args__=SCHEMA#查询带上库名前缀
TRANS_ID=db.Column(db.INTEGER,primary_key=True)
TITLE=db.Column(db.VARCHAR(255),nullable=False)
VERSION_ID=db.Column(db.INTEGER)
PROJECT_ID=db.Column(db.INTEGER,nullable=False)
TEMPLET_ID=db.Column(db.INTEGER)
STAFF_ID=db.Column(db.INTEGER,nullable=False)
CREATE_DATE=db.Column(db.DATE)
STATE=db.Column(db.CHAR(1))
PATCH_ID=db.Column(db.INTEGER,db.ForeignKey(version_patch.PATCH_ID))
UP_TRANS_ID=db.Column(db.INTEGER)#子单/关联单ID
TYPE=db.Column(db.CHAR(1))#子单关联单类型
SUBMITTER=db.Column(db.INTEGER)
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 271 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信