Per completezza, ecco come ci si genera che SQL esatto con l'utilizzo sqlalchemy.sql.func
:
from sqlalchemy.sql import func
from sqlalchemy.sql.expression import bindparam
from sqlalchemy import Interval
tomorrow = func.dateadd(func.now(), bindparam('tomorrow', timedelta(days=1), Interval()))
che si traduce in:
>>> from sqlalchemy.sql import func
>>> func.dateadd(func.now(), bindparam('tomorrow', timedelta(days=1), Interval(native=True)))
<sqlalchemy.sql.expression.Function at 0x100f559d0; dateadd>
>>> str(func.dateadd(func.now(), bindparam('tomorrow', timedelta(days=1), Interval(native=True))))
'dateadd(now(), :tomorrow)'
In alternativa è possibile utilizzare un oggetto text()
per specificare l'intervallo invece:
from sqlalchemy.sql import func
from sqlalchemy.sql.expression import text
tomorrow = func.dateadd(func.now(), text('interval 1 day'))
fonte
2013-03-22 15:12:10
purtroppo sistema di data di SQLAlchemy non si costringere automaticamente in funcitons specifici di piattaforma come DATEADD() al momento. Solo su Postgresql con psycopg2 (e forse anche mysql) la semplice aritmetica data come sopra traduce in ciò che il DB si aspetta. – zzzeek