我知道问题听起来可能与已经存在的问题相似,但是我没有从中获得适当的解决方案。
我想知道的是如何在两个分别名为 master_db 和 slave_db 的不同数据库(两个数据库均为Sql Server)的两个表之间创建关系。 >
应用程序中使用sqlalchemy __bind__
参数支持多个数据库,而pymssql用于连接
model1.py
from sqlalchemy import db
from sqlalchemy import Column, Unicode
class Profile(db.Model):
__tablename__ = 'Profile'
__bind_key__ = 'slave_db'
user_id = Column(Integer, nullable=False)
status_code = Column(Unicode(20), nullable=False)
user_status = relationship('UserStatus',
primaryjoin='UserStatus.code == foreign(Profile.status_code)',
uselist=False,
lazy='joined',
order_by='asc(UserStatus.code)',
viewonly=True,
)
model2.py
class UserStatus(db.Model):
__tablename__ = 'UserStatus'
__table_args__ = (
{"schema": "dbo"}
)
__bind_key__ = 'master_db'
code = Column(Unicode(50), primary_key=True, nullable=False)
desc = Column(Unicode(50), nullable=False)
我在个人资料模型中收到 user_status关系的错误。
数据库中的数据如下:
Profile:
user_id, status_code
1 , 10
2 , 10
3 , 20
4 , 30
UserStatus:
code, desc
10 , Pending
20 , Active
30 , InActive
期望Outpur为:
Profile:
1, 10, Pending
2, 10, Pending
3, 20, Active
4, 30, InActive
注意::如果两个表都在同一个数据库中,即 slave_db
,则 user_status 可以完美地工作请不要提供db.session.execute(“ raw SQL Query”)之类的解决方案我无法使用原始sql查询获取数据,因为已经有很多关联实施,我将无法为其编写原始sql查询。
收到的错误为: sqlalchemy.exc.ProgrammingError:(pymssql.ProgrammingError)(208,b“无效的对象名称'dbo.UserStatus'.DB-Lib错误消息208,严重性16:\ n常规SQL Server错误:检查来自SQL Server的消息\ n” )