(仅)使用SqlAlchemy生成SQL代码

2024-06-16 14:17:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以使用SqlAlchemy ORM映射器只生成SQL代码吗?

对于简单的表,我可以使用如下代码

print users_table.select()
print users_table.insert()
print users_table.update()
print users_table.delete()

但是对于ORM,我只找到了一种选择语句的方法:

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

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

谢谢。


Tags: 方法代码sqlsqlalchemyormtableupdate语句
3条回答

很简单。正如您所做的,您可以将查询转换为字符串

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

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

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


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

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


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

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

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

ORM被设计成非常紧密的数据绑定,因此不会真正与DB会话分离。另一方面,表达式语言可以直接翻译成SQL。(只需获取任何结果对象并将其传递给str(),就可以得到等效的SQL。)

相关问题 更多 >