Python SQLAlchemy外键可以';找不到桌子
当我尝试实例化Python SQLAlchemy外键可以';找不到桌子,python,foreign-keys,sqlalchemy,Python,Foreign Keys,Sqlalchemy,当我尝试实例化ConsumerDevice类时,出现此错误 Foreign key associated with column 'tbConsumerAdvice.ConsumerAdviceCategory_ID' could not find table 'tbConsumerAdviceCategories' with which to generate a foreign key to target column 'ID_ConsumerAdviceCategories' clas
ConsumerDevice
类时,出现此错误
Foreign key associated with column 'tbConsumerAdvice.ConsumerAdviceCategory_ID'
could not find table 'tbConsumerAdviceCategories' with which to generate a
foreign key to target column 'ID_ConsumerAdviceCategories'
class ConsumerAdviceCategory(基本类):
__tablename_uu='tbConsumerAdviceCategories'
__表_args_uu={'schema':'dbo'}
ID_consumeradvicetegories=列(整数,序列('idcac')\
主(主键=真)
Name=Column(VARCHAR(50),null=False)
定义初始化(self,Name):
self.Name=Name
定义报告(自我):
返回“%self.Name
类消费设备(基本):
__tablename_uu='TBConsumerDevice'
__表_args_uu={'schema':'dbo'}
ID_ConsumerAdvice=列(整数,序列('idconsumeradvice')\
主(主键=真)
ConsumerAdviceCategory_ID=列(整数\
ForeignKey('tbConsumerAdviceCategories.ID_consumeradvicategories'))
Name=Column(VARCHAR(50),null=False)
类别\u子ID=列(整数)
ConsumerAdviceCategory=关系(“ConsumerAdviceCategory”\
backref=backref('ConsumerAdvices'))
定义初始化(self,Name):
self.Name=Name
定义报告(自我):
返回“%self.Name
定义FK,包括模式:dbo.tbconsumeradvicetegories.ID\u consumeradvicetegories
我不得不使用
ConsumerAdviceCategory_ID = Column(INTEGER,
ForeignKey('tbConsumerAdviceCategories.ID_ConsumerAdviceCategories',
schema='dbo'))
我也犯了这个错误。在我的例子中,根本原因是我试图定义不同的sqlalchemy基类:
Base1 = declarative_base(cls=MyBase1)
Base1.query = db_session.query_property()
Base2 = declarative_base(cls=MyBase2)
Base2.query = db_session.query_property()
我从一个派生自Base1
的类到另一个派生自Base2
的类有一个ForeignKey
关系。这不起作用——我得到了一个类似的norreferencedtableerror
。显然,类必须从相同的基类派生,以便相互了解
希望这对某人有所帮助。不知道为什么,但是如果您从
\uuu表\u参数\uuuu
中删除模式,它会工作(用SQLite测试)。您使用哪种RDBMS?。。。尝试定义FK,包括架构:dbo.tbconsumeradvicetegories.ID\u consumeradvicetegories
@van这是MSSQL,将架构添加到FK定义成功!非常荣幸。。你能添加答案以便我将其标记为已回答吗?我不明白你是如何做到这一点的,因为添加这样的参数会引发类型错误:其他参数应命名为
。
Base1 = declarative_base(cls=MyBase1)
Base1.query = db_session.query_property()
Base2 = declarative_base(cls=MyBase2)
Base2.query = db_session.query_property()