仅使用SqlAlchemy生成SQL代码
我可以只用SqlAlchemy的ORM映射器来生成SQL代码吗?
对于简单的表,我可以使用这样的代码:
print users_table.select()
print users_table.insert()
print users_table.update()
print users_table.delete()
但是用ORM我只找到了一种生成SELECT语句的方法:
TestUser = User("John", "Doe")
print session.query(User)
我怎么才能生成INSERT/UPDATE/DELETE的SQL(而不是真的去操作数据库)呢?
谢谢。
3 个回答
3
你可以通过 sqlalchemy.orm.class_mapper 函数来访问映射类的表对象:
users_table = class_mapper(User).mapped_table
users_table.insert(..)
如果你使用的是声明式语法,你可以这样做:
users_table = User.__table__
users_table.insert(..)
3
这很简单。就像你做的那样,你可以把查询转换成字符串。
TestUser = User("John", "Doe")
# convert querying object to string
query_stat = str(session.query(User))
print query_stat
在这里,query_stat 应该是一个 SQL 查询语句。
9
也许你想要的是SQLAlchemy的核心表达语言,而不是ORM?
http://www.sqlalchemy.org/docs/core/index.html
ORM是为了和数据紧密结合而设计的,所以它和数据库会话是紧密相连的。而表达语言则可以直接转换成SQL语句。(你只需要把任何生成的对象传给str()
,就能得到对应的SQL语句。)