Jav*_*aSa 1 python mysql join sqlalchemy python-3.x
考虑您具有以下sql来表示:
SELECT user.id, user.name FROM user
JOIN address ON user.id = address.user_id
现在具有以下orm模型:
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
metadata = Base.metadata
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String
class Address(Base):
__tablename__ = 'address'
id = Column(Integer, primary_key=True)
address_name = Column(String(64))
user_id = Column(Integer)
class PostalCode(Base):
__tablename__ = 'postal_code'
id = Column(Integer, primary_key=True)
code = Column(Integer)
Run Code Online (Sandbox Code Playgroud)
在进行简单连接时,例如:
from sqlalchemy import select, join
u = User
add = Address
po = PostalCode
query = select([u.id, u.name]).select_from(join(u,add, u.id = add.user_id))
print(query)
Run Code Online (Sandbox Code Playgroud)
将产生等同于上述原始sql的等价表达式。
但是,如果我想做类似的事情:
SELECT user.id, user.name FROM user
JOIN address ON user.id = address.user_id
JOIN postal_code ON postal_code.id = address.id
通过写:
query = select([u.id, u.name]).select_from(join(u,add, u.id = add.user_id).join(po, po.id = add.id))
print(query)
Run Code Online (Sandbox Code Playgroud)
这会产生一个错误,内容如下:
Attributeerror: type object ____ has no attribute '_from_objects`
Run Code Online (Sandbox Code Playgroud)
知道我使用两个联接的语法有什么问题吗?
如何使用一个的解释join是在这里。
小智 5
通过子查询联接,您可以实现多个联接:
query = select([u.id, u.name]).select_from(join(join(u,add, u.id = add.user_id),po, po.id = add.id))
print(query)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
744 次 |
| 最近记录: |