我有一个使用sqlalchemy核心的脚本,但遗憾的是我需要重写它以使用原始sql代替。是否有可能在没有显式引擎的情况下将我的sqla insert / etc ...语句转换为特定的方言(oracle here)?
基本上,能够为str(some_sqla_core_expression)使用非默认引擎吗?
答案 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