【发布时间】:2021-05-16 06:58:02
【问题描述】:
我有以下内容,但由于某种原因,我没有得到我的查询结果,而是得到了其他东西
这是我正在使用的 Python 包
这是文档
from databases import Database
database=Database('postgres://redacted')
await database.connect()
...
...
...
query = "SELECT orders.id AS orders_id, orders.notification_method AS orders_notification_method WHERE shipped=True"
result = await database.fetch_all(query=query))
这是得到的,而不是得到我的查询结果
打印(结果)
[<databases.backends.postgres.Record object at 0x7fb3f415ac50>, <databases.backends.postgres.Record object at 0x7fb3f415ae30>, <databases.backends.postgres.Record object at 0x7fb3f415a470>, <databases.backends.postgres.Record object at 0x7fb3f415af50>, <databases.backends.postgres.Record object at 0x7fb3f415ad70>, <databases.backends.postgres.Record object at 0x7fb3f415ab30>, <databases.backends.postgres.Record object at 0x7fb3f415a7d0>, <databases.backends.postgres.Record object at 0x7fb3f415ae90>]
并且类型说它是一个列表
打印(类型(结果))
<class 'list'>
如何返回 SQL 查询的实际结果,即返回查询中的所有行?
我真正想做的事
这里是
sqlalchemy版本,但使用databases包无法如上所述工作
我非常想要实现的是从 sqlalchemy 查询中获得类似的结果,如下所示,并且能够从查询结果中迭代行
...
...
...
class Orders:
id: Optional[int]
notification_method: str
shipped: Optional[bool]
...
...
...
session = create_session()
result=session.query(Orders).filter(Orders.shipped == True)
打印(结果)
SELECT orders.id AS orders_id, orders.notification_method AS orders_notification_method FROM orders
WHERE orders.shipped = true
打印(类型(结果))
<class 'sqlalchemy.orm.query.Query'>
然后我希望能够遍历行
for r in result:
print(r)
输出
Orders(id=1, notification_method='call', shipped=True)
Orders(id=2, notification_method='sms', shipped=True)
Orders(id=3, notification_method='call', shipped=True)
只想获得与此 sqlalchmey 类似的结果,但使用本问题开头提到的databases
【问题讨论】:
-
我希望它返回我的查询结果......我的意思是代码显示了我想要的......我想打印 sql 查询的结果
-
如何从 sql 查询中返回行?
-
我用更多上下文更新了问题...有什么遗漏吗?
标签: python postgresql sqlalchemy python-asyncio fastapi