我可以使用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(无需真正操作数据库)?
感谢。
答案 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查询语句。