cnu*_*cnu 2 python sql sqlalchemy
我有一个名为日志的表,它有一个日期时间字段。我想根据特定日期格式选择日期和行数。
如何使用 SQLAlchemy 执行此操作?
小智 5
我不知道通用的 SQLAlchemy 答案。大多数数据库支持某种形式的日期格式,通常是通过函数。SQLAlchemy 支持通过 sqlalchemy.sql.func 调用函数。例如,在 Postgres 后端和表 my_table(foo varchar(30), when timestamp) 上使用 SQLAlchemy 我可能会做类似的事情
my_table = metadata.tables['my_table']
foo = my_table.c['foo']
the_date = func.date_trunc('month', my_table.c['when'])
stmt = select(foo, the_date).group_by(the_date)
engine.execute(stmt)
Run Code Online (Sandbox Code Playgroud)
按截断为月份的日期分组。但请记住,在该示例中, date_trunc() 是 Postgres 日期时间函数。其他数据库会有所不同。你没有提到底层数据库。如果有一种独立于数据库的方式来做到这一点,我从来没有找到过。在我的情况下,我运行生产和测试 aginst Postgres 和单元测试 aginst SQLite,并在我的单元测试中使用 SQLite 用户定义的函数来模拟 Postgress 日期时间函数。