Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQLAlchemy:映射多表和关系_Python_Sqlalchemy - Fatal编程技术网

Python SQLAlchemy:映射多表和关系

Python SQLAlchemy:映射多表和关系,python,sqlalchemy,Python,Sqlalchemy,有一些模型: from sqlalchemy import create_engine, Table, Column, Integer, \ String, MetaData, join, ForeignKey, select from sqlalchemy.orm import sessionmaker, column_property, relationship from sqlalchemy.ext.declarative import declarative_base

有一些模型:

from sqlalchemy import create_engine, Table, Column, Integer, \
        String, MetaData, join, ForeignKey, select
from sqlalchemy.orm import sessionmaker, column_property, relationship
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite:///memory')
s = sessionmaker(bind = engine)()
Base = declarative_base()
metadata = MetaData()

class BaseItem(Base):
    __tablename__ = 'base_item'

    id = Column(Integer, primary_key=True)
    name = Column(Integer)


class Stats(Base):
    __tablename__ = 'stats'

    id = Column(Integer, primary_key=True)
    base_item_id = Column(ForeignKey('base_item.id'))
    key = Column(String(60))
    value = Column(Integer)


class ItemProxy(Base):
    __tablename__ = 'item_proxy'

    id = Column(Integer, primary_key=True)
    base_item_id = Column(ForeignKey('base_item.id'))
    some = Column(Integer)
    bonus_item_id = Column(ForeignKey('base_item.id')) 


class Item(Base):
    __table__ = BaseItem.__table__.join(ItemProxy.__table__, ItemProxy.__table__.c.base_item_id == BaseItem.__table__.c.id)

    id = ItemProxy.__table__.c.id
    base_id = column_property(BaseItem.__table__.c.id, ItemProxy.__table__.c.base_item_id)
    stat = relationship('Stats')
    bonus_stat = relationship('Stats', ???)
model ItemProxy bonus\u item\u id字段不会始终填充。 您需要指定什么关系才能使其成为正确的查询