SQLAlchemy Query - Python



我对SQLAlchemy和查询是如何工作的有点困惑。假设我有一个table Team和另一个table Games。我安排好了,如果我做了,团队。它将调出该队参加过的所有比赛。为什么这是有效的:

from table_definitions import Team, Games
blah blah
session.query(Team).first().games

,这个失败:

teams_table = Table("teams", metadata, autoload=True)
session.query(teams_table).first().games
AttributeError: 'NamedTuple' object has no attribute 'Games'

? ?

我的第二个问题是在第一个查询中它返回这个,<table_def.Game object at 0x1b98090> —我如何让这个Game对象成为保存在每个条目中的所有数据的列表?

如果没有团队和游戏的定义,我很难判断。显然返回的对象是不同的。

很可能Team有一个table属性,它与teams_table具有相同的属性。

下面是一个多对多关系的例子,可能会有所帮助。

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Table, ForeignKey, Column, Integer, String, Float, Binary, DateTime, Boolean
from sqlalchemy.orm import relationship
Base = declarative_base()
market_target = Table(
    'market_target', Base.metadata,
    Column('market_id', Integer, ForeignKey('market.id'), primary_key=True ),
    Column('target_id', Integer, ForeignKey('target.id'), primary_key=True )
)
class Market(Base):
    __tablename__ = 'market'
    id = Column(Integer, primary_key=True)
    id_market = Column(String(50))
    market = Column(String(50))
    targets = relationship("Target", secondary=market_target, backref="markets")
class Target(Base):
    __tablename__ = 'target'
    id = Column(Integer, primary_key=True)
    id_target = Column(String(100))
    sort = Column(Integer)
    target = Column(String(200))

最新更新