Python 和 sqlite3 - 导入和导出数据库
Posted
技术标签:
【中文标题】Python 和 sqlite3 - 导入和导出数据库【英文标题】:Python and sqlite3 - importing and exporting databases 【发布时间】:2011-06-10 18:55:19 【问题描述】:我正在尝试编写脚本来导入数据库文件。我编写了这样的脚本来导出文件:
import sqlite3
con = sqlite3.connect('../sqlite.db')
with open('../dump.sql', 'w') as f:
for line in con.iterdump():
f.write('%s\n' % line)
现在我希望能够导入该数据库。我试过了:
import sqlite3
con = sqlite3.connect('../sqlite.db')
f = open('../dump.sql','r')
str = f.read()
con.execute(str)
但我不能执行多个语句。有没有办法让它直接运行 SQL 脚本?
【问题讨论】:
【参考方案1】:sql = f.read() # watch out for built-in `str`
cur.executescript(sql)
Documentation.
【讨论】:
@adam - 如果您从文档中复制光标,我认为您的意思是先创建一个光标(“cur.”) sqlite3 模块允许两种用法;任你选。 @adam - 我知道这一点。但是问题代码中没有定义“cur”,对吧? 有没有更有效的方法来执行大量插入?我有很多,这样太慢了 这里有一些提示:sqlite.org/cvstrac/wiki?p=PerformanceTuning 转储应该已经为您包装在事务中(以避免在插入之间打开和关闭数据库)。【参考方案2】:尝试使用
con.executescript(str)
文档
Connection.executescript(sql_script)
This is a nonstandard shortcut that creates an intermediate cursor object
by calling the cursor method, then calls the cursor’s executescript
method with the parameters given.
或者先创建光标
import sqlite3
con = sqlite3.connect('../sqlite.db')
f = open('../dump.sql','r')
str = f.read()
cur = con.cursor()
cur.execute(str)
【讨论】:
以上是关于Python 和 sqlite3 - 导入和导出数据库的主要内容,如果未能解决你的问题,请参考以下文章
appium+python自动化51-adb文件导入和导出(pull push)
Python数据库操作 Mysql数据库导入导出和授权#学习猿地