首页 > 解决方案 > 什么是 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)

标签: postgresqlsqlalchemyceleryfastapi

解决方案


SQLAlchemy 的查询结果取决于您使用的特定后端引擎。例如,filter(orders.shipped == True)可以转换为类似WHERE shipped = 't'PostgreSQL 的东西。您始终可以记录它发送到数据库后端的查询。对于您的特定情况SELECT * FROM orders WHERE shipped应该足够了。


推荐阅读