2012-02-10 5 views
6

私はsqlalchemyコアを使用するスクリプトを持っていますが、代わりにraw SQLを使用するように書き直す必要があります。明示的なエンジンなしで、私のsqla insert/etc ...文を特定の方言(ここではoracle)に翻訳することは可能ですか?接続せずにsqlalchemyのコア文を未処理のSQLに変換しますか?

基本的に、str(some_sqla_core_expression)にデフォルト以外のエンジンを使用できますか?

答えて

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

+0

おかげで、私は何とかしてこれを逃しましたチュートリアル –

関連する問題