使用Python的sqlite3模块,我可以在创建后将内存数据库保存到磁盘吗?

时间:2014-12-14 21:25:50

标签: python python-2.7 sqlite

sqlite3命令行工具允许我.save <file>内存数据库,而不必以其字符串/脚本形式转储SQL。

我想做类似的事情而不用写太多的样板代码。但是,我并不总是想保存它,这就是为什么我想在实际需要之前避免磁盘上的数据库。

有没有办法在Python中执行此操作,而不是以字符串形式转储SQL并将其导入磁盘文件(我知道该怎么做并已经实现)?

1 个答案:

答案 0 :(得分:2)

似乎没有单行解决方案。

备份in-memory sqlite数据库可以使用连接对象的iterdump方法完成。当然,这只是只是没有转储sql文本并导入它。

import sqlite3
# set up a database in memory

c = sqlite3.connect(':memory:')
c.execute('CREATE TABLE my_table (id int, name text);')
c.execute("INSERT INTO my_table VALUES (1, 'bruce'), (2, 'wayne'), (3, 'BATMAN');")
c.commit()

# write database to disk

c2 = sqlite3.connect('mydb.db')
with c2:
  for line in c.iterdump():
    if line not in ('BEGIN;', 'COMMIT;'): # let python handle the transactions
      c2.execute(line)
c2.commit()