postgresql - 什么是 sql 查询等价于 sqlalchemy 查询?
问题描述
我在使用编码数据库(https://pypi.org/project/databases/)处理 SQL 查询的结果时遇到问题,但这个 sqlalchemy 查询适用于 celery 任务
query = session.query(orders).filter(orders.shipped == True)
我已经尝试了以下(芹菜任务无法使用python从postgresql数据库中迭代多行)但不起作用
def check_all_orders():
query = "SELECT * FROM orders WHERE shipped=True"
return database.fetch_all(query)
...
...
...
@app.task
async def check_orders():
query = await check_all_orders()
today = datetime.utcnow()
for q in query:
if q.last_notification is not None:
if (today - q.last_notification).total_seconds() < q.cooldown:
continue
有谁知道什么 SQL 语句会生成我可以像这个 sqlalchemy 查询那样迭代的东西?
query = session.query(orders).filter(orders.shipped == True)
解决方案
SQLAlchemy 的查询结果取决于您使用的特定后端引擎。例如,filter(orders.shipped == True)
可以转换为类似WHERE shipped = 't'
PostgreSQL 的东西。您始终可以记录它发送到数据库后端的查询。对于您的特定情况SELECT * FROM orders WHERE shipped
应该足够了。
推荐阅读
- python - How to get State name from Latitude and Longitude in India
- kubernetes - 在 AWS kuberbetes 上安装超集后无法登录
- sql - ( CASE WHEN [date] IS NULL THEN 0 ELSE 1 END) is not working in my pivot
- visual-studio - Move caret line start/end in Visual Studio 2019?
- java - 当将 Jason 反序列化为 ProtoBuffer 时,消息 null 值设置为默认值
- powerbi - 表视觉对象中的不同计数行
- django - Django Loop 返回一行
- apache - 如何在 Apache 中添加检查,以便删除查询参数超过 800 个字符的任何请求
- vb.net - 如何在 Microsoft Visual Studio Express 2012 for Web 的工具箱中添加功能?
- apple-sign-in - 苹果登录授权返回错误:操作无法完成。(com.apple.AuthenticationServices.AuthorizationError 错误 1000。)