python - 如何使用 PostgreSQL 在 Python 中理解和使用 asyncio?

标签 python postgresql python-asyncio

我正在尝试学习如何在 Python 中使用 asyncio 框架。我有以下代码,但它给出了错误:

event loop stopped before the future completed.

另请更新捕获代码输出的位置。

代码:

import asyncio
import aiopg

dsn = 'dbname=dvdrental user=postgres password=password host=127.0.0.1'


async def go():
    pool = await aiopg.create_pool(dsn)
    async with pool.acquire() as conn:
        async with conn.cursor() as cur:
            await cur.execute("Select * from actor")
            ret = []
            async for row in cur:
                ret.append(row)
            assert ret == [(1,)]

loop = asyncio.get_event_loop()
loop.run_until_complete(go())

最佳答案

在退出 go() 协程和循环停止之前,池没有关闭。

使用 async with aiopg.create_pool() 而不是 await aiopg.create_pool() 或显式调用 pool.close()/await pool.await_closed() 在协程结束时。

关于python - 如何使用 PostgreSQL 在 Python 中理解和使用 asyncio?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48673117/

相关文章:

python - asyncio 中的循环时间与 time.monotonic 相同吗?

python - 如何将 python asyncio 和多​​处理结合起来?

python - Pandas 数据框中的计算列链

python - 如何使用 Django 将图像流式传输到浏览器

postgresql - 为什么 PostgreSQL 没有一种简单可靠的方法来访问表创建时间?

sql - 树结构和递归

sql - Postgresql INSERT 要求主键值?

python - 有效地比较任意分配的标签列表

python - 将对象列表转换为 Pandas 数据框

python - 将 Python Cement 与 asyncio 相结合