无需连接即可将sqlalchemy核心语句转换为原始SQL?

时间:2012-02-10 15:58:58

标签: sqlalchemy

我有一个使用sqlalchemy核心的脚本,但遗憾的是我需要重写它以使用原始sql代替。是否有可能在没有显式引擎的情况下将我的sqla insert / etc ...语句转换为特定的方言(oracle here)?

基本上,能够为str(some_sqla_core_expression)使用非默认引擎吗?

1 个答案:

答案 0 :(得分:7)

任何表达式都变成这样的字符串(基本上是stmt.compile(dialect=dialect)):

from sqlalchemy.sql import column, table, select
from sqlalchemy.dialects import oracle

dialect = oracle.dialect()
table = table('sometable', column('id'), column('data'))
stmt = select([table]).where(table.c.id==5).where(table.c.data=='foo')
raw_sql = unicode(stmt.compile(dialect=dialect))
print raw_sql

目前在SQL教程中有一个例子:http://docs.sqlalchemy.org/en/latest/core/tutorial.html#using-joins