我是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)
| 归档时间: |
|
| 查看次数: |
2202 次 |
| 最近记录: |