0

SQLAlchemy とクエリの仕組みについて少し混乱しています。テーブルチームと別のテーブルゲームがあるとしましょう。Team.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'

??

2 番目の質問は、これを返す最初のクエリにあります。<table_def.Game object at 0x1b98090>この Game オブジェクトを、各エントリに保存されたすべてのデータのリストにする方法を教えてください。

4

1 に答える 1

0

チームとゲームの定義がなければ、私にはわかりません。明らかに、返されるオブジェクトは異なります。

Team には、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))
于 2013-03-25T07:58:24.163 に答える