Đối với đầy đủ lợi ích, đây là cách bạn muốn tạo ra rằng SQL chính xác với việc sử dụng 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()))
kết quả là:
>>> 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)'
Hoặc bạn có thể sử dụng một đối tượng text()
để xác định khoảng thời gian thay vì:
from sqlalchemy.sql import func
from sqlalchemy.sql.expression import text
tomorrow = func.dateadd(func.now(), text('interval 1 day'))
Nguồn
2013-03-22 15:12:10
không may hệ thống ngày SQLAlchemy sẽ không tự động ép buộc vào funcitons cụ nền tảng như DATEADD() ngay bây giờ. Chỉ trên Postgresql với psycopg2 (và có lẽ mysql cũng) làm số học ngày đơn giản như trên dịch thành những gì DB mong đợi. – zzzeek