我正在尝试使用遗留SQL架构中存在的SQLAlchemy关系进行描述。我将架构翻译为:
class Lang(Base):
__tablename__ = "tblLang"
id = Column("ID", Integer, primary_key=True)
# ...
class ItemName(Base):
__tablename__ = "tblItemName"
# ItemName has a composite primary key
id = Column("ID", Integer, primary_key=True)
lang_id = Colunm("Lang", Integer, ForeignKey("Lang.id"), primary_key=True)
name = Column("Name", String)
class Item(Base):
__tablename__ = "tblItem"
id = Column("id", Integer, primary_key=True)
inventory = Column("Inventory", Integer)
# item_name_id specifies only part of the table
# relationship
item_name_id = Column("ItemNameID", Integer, ForeignKey("tblItemName.ID"))
# lang_id should come from outside the database:
# a user preference stored in a configuration file
# or a session cookie, etc.
item_name = relationship(???)
也就是说,我们拥有一组已知的语言。对于每个项目,可能会有一种或多种语言的项目名称,但是我们应该选择的lang_id
将由外部参数给出。
我希望能够在执行查询之前创建具有此值的查询对象。
我的问题是:我应该在上面的代码中代替???
放置什么才能创建这样的查询,以及在执行之前如何指定lang_id
?
编辑:
下面的[每@sanyash条评论:这是我希望能够获得的示例查询:
SELECT tblItemName.Name, tblItem.Inventory
FROM tblItem
LEFT JOIN tblTiemName
ON tblItemName.ID = tblTiem.NameID
AND tblItem.Lang = :lang
[:lang
已设置为2
(从用户首选项中获取)] >>
[写类似的东西时:
query = session.query(Item).with_entities([
Iten.c.item_name.name,
Item.c.inventory
])
我正在尝试使用遗留SQL架构中存在的SQLAlchemy关系进行描述。我将模式翻译为:类Lang(Base):__tablename__ =“ tblLang” id = Column(“ ID”,Integer,...
警告:这是一种解决方法,可能不是最佳方法,甚至不正确