Der Vollständigkeit halber ist hier, wie Sie diese genaue SQL mit der Verwendung von sqlalchemy.sql.func
erzeugen würde:
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()))
die Ergebnisse:
>>> 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)'
Alternativ könnten Sie ein text()
-Objekt verwenden, um das Intervall zu spezifizieren statt:
from sqlalchemy.sql import func
from sqlalchemy.sql.expression import text
tomorrow = func.dateadd(func.now(), text('interval 1 day'))
leider SQLAlchemy Datum des Systems nicht automatisch coerce in plattformspezifische funcitons wie DATEADD() ein. Nur auf Postgresql mit psycopg2 (und vielleicht auch mysql) übersetzt einfache Datumsarithmetik wie oben in das, was die DB erwartet. – zzzeek