python内存保存sqli

2024-04-27 05:33:41 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以将内存中的sqlite数据库保存到硬盘? 如果可能的话,一些python代码将是非常棒的。

提前谢谢。

编辑:

我通过使用apsw成功地完成了这项任务。它就像一个符咒。谢谢你的贡献。


Tags: 内存代码数据库编辑sqlite贡献apsw硬盘
3条回答

(披露:我是APSW作者)

制作数据库二进制副本的唯一安全方法是使用备份API,它是SQLite的一部分,由APSW公开。这对排序、锁定和并发都是正确的。

若要制作数据库的SQL(文本)副本,请使用APSWshell,它包含一个非常完整的.dump实现。可以使用cursor.execute()将SQL转换回数据库。

在最近的平台上,当操作系统维护一个文件系统缓存时,您不太可能看到内存数据库和磁盘数据库(假设您关闭了磁盘的日志记录)之间的很大区别。像Windows XP这样的旧操作系统的默认配置是,不管有多少RAM,文件缓存都只使用10MB的内存。

根据sqlite3 python documentation,您可以使用^{}方法对内存中的数据库进行.sql文件转储,然后将该.sql文件应用于新的sqlite文件数据库就很简单了。

# Convert file existing_db.db to SQL dump file dump.sql
import sqlite3, os

con = sqlite3.connect('existing_db.db')
with open('dump.sql', 'w') as f:
    for line in con.iterdump():
        f.write('%s\n' % line)

是的。创建到数据库的连接时,请将:memory:替换为要保存数据库的路径。

sqlite对基于文件的DBs使用缓存,因此速度不应该太慢。

相关问题 更多 >