(仅)使用SqlAlchemy生成SQL代码

时间:2011-03-08 21:02:02

标签: python orm sqlalchemy

我可以使用SqlAlchemy ORM-Mapper仅生成SQL代码吗?

使用简单的表格,我可以使用像

这样的代码
print users_table.select()
print users_table.insert()
print users_table.update()
print users_table.delete()

但是使用ORM我只找到了SELECT-Statements的方法:

TestUser = User("John", "Doe")
print session.query(User)

如何为INSERT / UPDATE / DELETE生成SQL(无需真正操作数据库)?

感谢。

3 个答案:

答案 0 :(得分:7)

也许你想要SQLAlchemy核心表达式语言,而不是ORM?

http://www.sqlalchemy.org/docs/core/index.html

ORM的设计是非常严格的数据绑定,因此不会真正与其数据库会话分离。另一方面,表达式语言可以直接转换为SQL。 (只需获取任何生成的对象并将它们传递给str(),您将获得等效的SQL。)

答案 1 :(得分:3)

您可以通过sqlalchemy.orm.class_mapper函数访问映射类的表对象:


users_table = class_mapper(User).mapped_table 
users_table.insert(..)

如果您使用的是声明性语法,则可以执行以下操作:


users_table = User.__table__
users_table.insert(..)

答案 2 :(得分:3)

这很简单。就像你做的那样,你可以将查询转换为字符串

TestUser = User("John", "Doe")
# convert querying object to string
query_stat = str(session.query(User))
print query_stat 

在这里,query_stat应该是SQL查询语句。