MSSQL查询DATEADD(day,-1,GETDATE())的SQLAlchemy等效项

阿尔西娜

我有一个非常简单的Microsoft SQL查询,正在尝试将其转换为SQLAlchemy。

我在这里阅读了文档:https : //docs.sqlalchemy.org/en/13/core/tutorial.html#functions然后,我尝试了几种方法,包括Python datetime,但似乎仍然缺少SQLAlchemy初学者。

MSSQL代码:

SELECT flight_ID FROM
flight_table
WHERE FlightStartTime < DATEADD(day, -1, GETDATE())

SQLAlchemy代码:

from sqlalchemy import func


table_ref = flight_table # Used reflection

num_day = -1
stmt = select([table_ref.c.flight_ID])
where_column = flight_table.columns.FlightStartTime


stmt = stmt.where(
    where_column < func.dateadd(func.day(), num_day,
                                    func.getdate())
    )

with self.engine.connect() as conn:
    output = conn.execute(stmt).fetchall()

我得到的错误如下:

sqlalchemy.exc.ProgrammingError:(pyodbc.ProgrammingError)('42000','[42000] [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server] day函数需要1个参数。(174)(SQLExecDirectW );

该错误是可以理解的,因为我需要找到Microsoft SQL查询中定义的等效于“ day”的SQLAlchemy。

任何指针将不胜感激。

谢谢。

戈德·汤普森

我需要找到与Microsoft SQL查询中定义的“天”等效的SQLAlchemy

您可以使用SQLAlchemytext函数创建将在查询表达式中使用的文字:

import sqlalchemy as sa

# ... set up your engine by calling `sa.create_engine` ...

flight_table = sa.Table("flight_table", sa.MetaData(), autoload_with=engine)

num_days = -1
stmt = sa.select([flight_table.c.flight_ID]).where(
    flight_table.c.FlightStartTime
    < sa.func.dateadd(sa.text("day"), num_days, sa.func.getdate())
)
with engine.connect() as conn:
    result = conn.execute(stmt).fetchall()
    print(result)

生成的SQL命令文本为

SELECT flight_table.[flight_ID] 
FROM flight_table 
WHERE flight_table.[FlightStartTime] < dateadd(day, ?, getdate())

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

GETDATE()+ x比DATEADD(day,x,GETDATE())有什么优势吗?

PostgreSQL中的DATEADD等效项

MSSQL 固定 getdate() 每个查询

mssql中的initcap等效项

子查询的联接等效项

Django查询中的sql“ LIKE”等效项

MongoDB中的SQL查询等效项

Sqlalchemy不会为MSSQL GETDATE()服务器默认发出正确的SQL

范围MSSQL之间的DATEADD MINUTES

使用自定义等效项的django不同查询

laravel雄辩的SQL Count GroupBy查询等效项是什么?

该查询的休眠等效项是什么(添加两列)

Join with Where子句的查询和方法(lambda)语法的等效项

什么是下面的SQL查询的LINQ等效项

Laravel查询生成器中的MySQL YEAR()等效项

连接解决方案的子查询等效项

这些查询的 Oracle 旧语法连接等效项是什么?

内部联接子查询Django ORM等效项

以下 SQL 查询的 LINQ 等效项是什么?

等效于此MySQL查询的MSSQL,可模拟row_number()

SQLAlchemy:无法获取第一项查询

SQLAlchemy - 通过列表中的子项名称查询父项

Cloud Firestore Firebase集合参考上的IN查询是否具有Flutter / Dart等效项?

Flux查询语言中的SELECT <某些列>等效项是什么?

如何在熊猫中执行相关子查询的等效项

为什么此 Linq 查询返回的结果与 SQL 等效项不同?

在 R 中创建和查询分组摘要的最有效方法及其 Python 等效项

如何正确使用两个数据框之间的SQL减查询等效项

什么是SQL Server中的Oracle查询SET UNUSED(Column_name)的等效项