0

我有这样的表:

from sqlalchemy import Column, Integer, select
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class Blah(Base):
    __tablename__ = 'Blah'
    container_id = Column(Integer, primary_key=True)
    blah_id = Column(Integer, primary_key=True)
    gprop = Column(Integer, index=True, nullable=False)

class GProp(Base):
    __table__ = select([
        Blah.container_id, Blah.gprop
    ]).group_by(
        Blah.container_id, Blah.gprop
    ).alias()

因为它GProp.__table__.primary_key拿起了container_id列,但我找不到使gprop列成为主键的一部分的方法。这打破了我的查询,SQLAlchemy 只会GProp为每个容器加载一个。

到目前为止未成功的修复:添加Column属性是被禁止的,因为它重新定义了现有的列,添加一个PrimaryKeyConstraintto__table_args__没有效果,并且猴子补丁__table__.primary_key被错误的断言捕获。

4

1 回答 1

2

好的,正在添加

__mapper_args__ = dict(primary_key=[__table__.c.container_id, __table__.c.gprop])

做这项工作,即使它没有反映在__table__.primary_key.

于 2012-10-05T09:25:00.330 回答