Skip to main content

到标准 sqlite3 模块的异步桥接

项目描述

PyPI 发布 文件状态 变更日志 代码覆盖率 构建状态 麻省理工学院许可 代码风格 黑色

aiosqlite 为 sqlite 数据库提供了一个友好的异步接口。

它复制了标准sqlite3模块,但具有所有标准连接和游标方法的异步版本,以及用于自动关闭连接和游标的上下文管理器:

async with aiosqlite.connect(...) as db:
    await db.execute("INSERT INTO some_table ...")
    await db.commit()

    async with db.execute("SELECT * FROM some_table") as cursor:
        async for row in cursor:
            ...

它也可以以传统的程序方式使用:

db = await aiosqlite.connect(...)
cursor = await db.execute('SELECT * FROM some_table')
row = await cursor.fetchone()
rows = await cursor.fetchall()
await cursor.close()
await db.close()

aiosqlite 还复制了sqlite3的大多数高级功能:

async with aiosqlite.connect(...) as db:
    db.row_factory = aiosqlite.Row
    async with db.execute('SELECT * FROM some_table') as cursor:
        async for row in cursor:
            value = row['column']

    await db.execute('INSERT INTO foo some_table')
    assert db.total_changes > 0

安装

aiosqlite 与 Python 3.6 和更新版本兼容。您可以从 PyPI 安装它:

$ pip install aiosqlite

细节

aiosqlite 允许在主 AsyncIO 事件循环上与 SQLite 数据库交互,而不会在等待查询或数据获取时阻塞其他协程的执行。它通过为每个连接使用单个共享线程来做到这一点。该线程执行共享请求队列中的所有操作,以防止操作重叠。

连接对象是真实连接的代理,包含共享执行线程,并提供上下文管理器来处理自动关闭的连接。游标类似于真实游标的代理,并提供异步迭代器来查询结果。

执照

aiosqlite 是John Reese的版权,并在 MIT 许可下获得许可。我根据开源许可向您提供此存储库中的代码。这是我的个人存储库;您收到的我的代码许可证来自我,而不是来自我的雇主。有关详细信息,请参阅许可证文件。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

aiosqlite-0.17.0.tar.gz (25.9 kB 查看哈希

已上传 source

内置分布

aiosqlite-0.17.0-py3-none-any.whl (15.4 kB 查看哈希

已上传 py3