sqlalchemy作为ORM层工具可以方便地编程式操作数据库, 但有时与外部系统交互时需要生成raw sql语句, 利用sqlalchemy可能方便地动态构造成sql语句.
假设我们有两个类代表User, Address两张表.
1 | from sqlalchemy.ext.declarative import declarative_base |
利用Query
构造生需要的语句, 使用compile
[1]输出query代表的sql语句.
1 | from sqlalchemy.orm import Query |
输出
1 | SELECT addresses.id, addresses.email_address, addresses.user_id, users_1.id, users_1.name, users_1.fullname, users_1.password |
注意输出中包含了Address.user
字段代表的join操作, 如果不需要这些字段可以lazyload
[2]取消.
1 | from sqlalchemy.orm import lazyload |
输出
1 | SELECT addresses.id, addresses.email_address, addresses.user_id |