SQLAlchemy错误 - "请明确为这些同名列配置一个或多个属性."

use*_*682 9 sqlalchemy

我是sqlalchemy的新手.试图让查询工作并且遇到连接问题.

我有两个表都有一个名为"Id"的列,我需要加入该表.我的代码看起来像这样:

table1 = server.tab1
table2 = server.tab2
joined = server.join(table1,table2, table1.Id == table2.Id)
where = table1.createDate > start
results = joined.filter(where).all()
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误消息:

将列table1.Id与列table2.Id隐式组合在属性"Id"下.请明确为这些同名列配置一个或多个属性.

问题是,我该如何配置这些属性?

TIA!

sha*_*pan -2

您可以使用sqlalchemy提供的连接功能,请参阅下面的示例,无需手动执行sqlalchme为我们做的事情,

from sqlalchemy import create_engine, Column, String, Integer, Table, ForeignKey

from sqlalchemy.orm import mapper, relationship
from sqlalchemy.schema import MetaData
from sqlalchemy.orm.session import sessionmaker

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column('user_id',Integer,primary_key = True)
    name = Column('user_name',String(20))

    addresses = relationship("Address",backref="user")

class Address(Base):
    __tablename__ = 'addresses'

    id = Column('user_id',ForeignKey('users.user_id'))
    address = Column('address',String(30))
    pk = Column('address_id',Integer,primary_key=1)

if __name__ == "__main__":
    engine = create_engine("sqlite://", echo = True)
    Base.metadata.create_all(engine)  
    session = sessionmaker(bind=engine)()

    u1 = User(name='japan')
    session.add(u1)
    session.commit()
    u1.addresses.append(Address(address='a1'))
    u1.addresses.append(Address(address='a2'))
    session.flush()
    q = session.query(User).join(User.addresses).all()
    print "="*23,q
Run Code Online (Sandbox Code Playgroud)