2012-02-10 5 views
6

Tengo un script que usa sqlalchemy core, pero desafortunadamente necesito reescribirlo para usar sql raw en su lugar. ¿Es posible traducir mis instrucciones sqla insert/etc ... en un dialecto específico (oráculo aquí) sin un motor explícito?¿Convierte sentencias core sqlalchemy a SQL sin conexión?

Básicamente, ¿se puede usar un motor no predeterminado para str (some_sqla_core_expression)?

Respuesta

7

cualquier expresión se convierte en una cadena como esta (básicamente 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 

De hecho, hay un ejemplo de esto en el tutorial de SQL en el momento aquí: http://docs.sqlalchemy.org/en/latest/core/tutorial.html#using-joins

+0

Gracias, de alguna manera se perdió esto en el tutorial –