python - sqlalchemy.exc.NoReferencedTableError : Foreign key associated with column X could not find table Y with which to generate a foreign key 错误

标签 python sql database postgresql sqlalchemy

我的 sqlalchemy 模式中出现以下错误

python manage.py db migrate
...
sqlalchemy.exc.NoReferencedTableError: Foreign key associated with column 
'ArxivPaperFigure.arxiv_id' could not find table 'papers' with which to 
generate a foreign key to target column 'arxiv_id' 

我不明白这个错误,因为表格文件不是新的而是以前存在的。我做了很多更改,包括给论文表一个新的表来继承,但是论文中的主键仍然是相同的 arxiv_id。这是我的论文表

class Papers(db.Model, Paper): 

    arxiv_id = db.Column(db.String(1000), primary_key=True)
    ...

指向这个表的表是

class ArxivPaperFigure(db.Model): 
    __tablename__ = 'ArxivPaperFigure'

    id = db.Column(db.Integer, primary_key=True)
    arxiv_id = db.Column(db.String(1000), db.ForeignKey('papers.arxiv_id'))

我可以通过重写外键来解决问题

arxiv_id = db.Column(db.String(1000), db.ForeignKey(Papers.arxiv_id))

但是,我有很多外键,对于一些也有这些外键的表,这个解决方案不起作用。所以我想明白为什么会出现这个错误?论文表确实存在。如果我使用 psql 并使用\d 打印所有表,我会找到该行

public | papers  | table    | user

那么为什么这个引用不再起作用了?

最佳答案

好的,我能够通过显式命名 Papers 表来解决它

__tablename__ = 'papers'

不确定为什么突然需要这样做,因为它以前都有效,但有了这个修复一切正常。

关于python - sqlalchemy.exc.NoReferencedTableError : Foreign key associated with column X could not find table Y with which to generate a foreign key 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48473140/

相关文章:

python sql间隔

mysql - 在左侧选择 group_concat 与 group_concat 加入

sql - 使用 PostgreSQL 剪切部分字符串

python - 我如何在没有 mysql 服务器的情况下管理小型数据库?

python - scipy.optimize.minimize,使用整数规划的旅行推销员

python - [Python][Pydev]未知编码: MS950_HKSCS

Python 3.4 无法识别包

sql - 显示大型结果集

php - 数据库设计视频学习

database - 数据库导入后 Postgres autovacuum 高 cpu/磁盘