从 Python/SQLAlchemy 使用 SQLite 的备份 API
我正在使用 python 中的 SQLite 数据库(使用 SQLAlchemy)。 出于性能原因,我想在应用程序中填充内存数据库,然后将该数据库备份到磁盘。
SQLite 有一个 备份 API,这似乎可以透明地完成此操作。
APSW 文档表示包装备份 API,但我想从 Python 的标准 sqlite3 模块访问此功能,或者在最好的情况下从 SQLAlchemy 访问此功能。 这可能吗?
I'm using an SQLite database from python (with SQLAlchemy). For performance reasons, I'd like to populate an in-memory database in the application, and then back up that database to disk.
SQLite has a backup API, which seems would do this transparently.
The APSW documentation says that it wraps the backup API, but I'd like to access this functionality from Python's standard sqlite3 module, or in the best case from SQLAlchemy. Is this possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
APSW 方言也可以很容易地添加到 SQLAlchemy 中。 在 0.6 中这很容易实现,它允许多种 DBAPI 适配器使用正在使用的数据库的通用方言。
the APSW dialect can be added to SQLAlchemy pretty easily as well. It would be very easy to achieve in 0.6, which allows multiple kinds of DBAPI adapters to make use of a common dialect for the database in use.
如果 pysqlite 和 apsw 连接到同一个 sqlite 库,则 pysqlite 可以接受 apsw 连接。 请参阅:
http://docs.pysqlite.googlecode。 com/hg/sqlite3.html#combining-apsw-and-pysqlite
我将尝试研究这种(和其他)方法来让 apsw 与 SQLAlchemy 一起使用,因为它们是一个非常有用的组合。
If pysqlite and apsw are linked against the same sqlite library then pysqlite can accept apsw connections. See:
http://docs.pysqlite.googlecode.com/hg/sqlite3.html#combining-apsw-and-pysqlite
I will try to do work on this (and other) approaches to getting apsw to work with SQLAlchemy as they are a very useful combination.
到了2021年,内存和磁盘之间的性能差异已经发生了变化。 我的游戏笔记本可以执行 SQL 操作,主要是 INSERT,在内存中比在磁盘中快 100 倍。 我正在使用原始连接进行备份(将内存数据库复制到磁盘)。
It's 2021, performance difference between memory and disk has changed. My gaming notebook can perform SQL operations, mostly INSERTs, 100x faster in memory than disk. I'm using raw connections to backup (copy in memory db to disk).
python-sqlite3-backup 模块声称可以解决这个问题。
The python-sqlite3-backup module claims to solve this problem.
当我执行以下操作时,
我看不到任何 备份 API 方法。
因此,答案是否定的; 您无法从 sqlite3 模块访问 API。 似乎没有人实施它。
When I do the following
I see none of the backup API methods.
Therefore, the answer is no; you cannot access the API from the sqlite3 module. It appears that no one implemented it.