python - 如何在 Tortoise ORM 中使用 db 函数
问题描述
我正在尝试编写一个简单的查询,但使用 PSQL 函数 CURRENT_DATE 和 INTERVAL,例如:
users = await User.filter(created_at__gt="CURRENT_DATE - INTERVAL '30 DAYS'")
如何让它发挥作用?谢谢
解决方案
不幸的是,Tortoise ORM 以不同的方式处理不同的查询。例如:
- 对于
update
查询,您可以只使用一个字符串值:
await User.filter(id=user_id).update(updated_at="now()")
- 对于
filter
您可以使用的查询pypika.functions
,pypika.terms
例如:
from pypika.terms import Parameter, Interval
await User.filter(created_at__gte=Parameter("CURRENT_DATE") - Interval(days=30))
- 对于
create
查询,这非常棘手。tortoise.fields.data.DateField
Tortoise ORM 不是为此而构建的,您需要做的是通过继承ortortoise.fields.data.DateTimeField
和覆盖to_db_value
方法来创建自己的字段类型类。
长话短说,这是可能的,但非常棘手,特别是如果您想使用所有 3 种类型的查询:CREATE、UPDATE 和 SELECT。
推荐阅读
- r - 在R中将2s补码/有符号二进制转换为int
- java - 如何从外部条码阅读器直接输入?
- python - 为什么这个 Python 程序没有给出理想的结果?
- javascript - Html Form提交EventListener不起作用,不知道为什么?
- function - powershell函数参数如何使用
- r - 无法使用 plot3d() 在同一图中共同可视化对象
- java - 如何限制kafka消费者的事件消费速度,使服务不受影响
- python - Python:合并数据框的几列而没有重复的数据
- r - 检查哪个值虚拟变量 R 分配给您的分类变量
- ruby-on-rails - 为什么你可以在铁路参数的 require 的返回值上调用 permit?