我在python(特别是python 2.7)中使用了一个模式文件myschema.sql
和一个数据库文件,我想在我的数据库中生成这个模式。mydatabase.db
sqlite3
我知道可以通过命令行执行以下操作
sqlite3 mydatabase.db < myschema.sql
或者,我可以执行以下操作,但这可能不适用于所有系统:
import os
os.popen("sqlite3 mydatabase.db < myschema.sql")
这不是我想要的,因为它可能无法在某些平台上使用。
我还想避免类似的事情:
import sqlite3
schema_str = open("myschema.sql","r").read()
connection = sqlite3.connect("mydatabase.db")
cur = connection.cursor()
list_of_insertions = map(lambda x: x.lstrip().replace("\n"," "),
schema.split(";"))
map(cur.execute, list_of_insertions)
connection.commit()
所以解析文件和单独创建表不是我想要的,我只是在寻找与命令行工具可以完成的功能等效的python-sqlite。
有一个executescript
专门用于此目的的辅助方法:
with open('myschema.sql') as fp:
cur.executescript(fp.read()) # or con.executescript
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句