这里是代码:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
AvailableModules = db.Table('available_modules',
db.Column('customer_id', db.Integer, db.ForeignKey('customers.id')),
db.Column('module_id', db.Integer, db.ForeignKey('modules.id')),
schema='tcloud_admin')
class Customer(db.Model):
__tablename__ = 'customers'
__table_args__ = {"schema":"tcloud_admin"}
id = db.Column(db.Integer, primary_key=True)
....
modules = db.relationship('Module', secondary=AvailableModules)
class Module(db.Model):
__tablename__ = 'modules'
__table_args__ = {"schema":"tcloud_admin"}
id = db.Column(db.Integer, primary_key=True)
....
尝试上面的脚本会给我这个错误:
sqlalchemy.exc.NoReferencedTableError:与之关联的外键 列' available_modules.customer_id'找不到桌子 '客户'用于生成目标列' id'
的外键
如果没有指定架构名称,一切正常。
答案 0 :(得分:1)
使用自定义架构名称时,引用该架构中的表或列的所有外键也必须显式包含该架构名称。
您的ForeignKey('customers.id')
引用了不在自定义架构中的其他表customers
。由于此表根本不存在,因此会出现相应的错误。
要修复错误,请更改外键:
db.ForeignKey('tcloud_admin.customers.id')
db.ForeignKey('tcloud_admin.modules.id')
中也对此进行了解释