SQLAlchemy:部分指定的关系

问题描述 投票:1回答:1

我正在尝试使用遗留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,...

python sqlalchemy foreign-keys ddl
1个回答
0
投票

警告:这是一种解决方法,可能不是最佳方法,甚至不正确

© www.soinside.com 2019 - 2024. All rights reserved.