如何在 SQLAlchemy 的 ORM 查询中添加数字?

How do I add numbers in a ORM query in SQLAlchemy?

我正在尝试使用 SQLAlchemy ORM 触发 DATEDIFF 查询,我需要在其中向DATEDIFF

的输出

ORM:

query = session.query(func.datediff(text("ss"), some_date, another_date) + 1000).all()

想要SQL:

SELECT DATEDIFF(SS, some_date, another_date) + 1000 FROM Table

执行上面的 ORM 查询输出 SQL as

 SELECT DATEDIFF(SS, some_date, another_date) || '' AS anon_1 FROM Table

并抛出一个 ProgrammingError "Implicit conversion from datatype 'VARCHAR' to 'INT' not allowed. Use the CONVERT function to run this query"

我试过将 label()func.datediff() 一起使用,但没有产生预期的结果。我怎样才能使这个查询工作?

SQLAlchemy 假定 func.datediff returns aString。您需要指定类型:

func.datediff(text("ss"), some_date, another_date, type_=Integer) + 1000

或强制使用 + 运算符:

func.datediff(text("ss"), some_date, another_date).op('+')(1000)