如何使用python中的模式文件在sqlite3中创建db文件

Fra*_*gas 5 python sqlite python-2.7

我有一个模式文件myschema.sql和一个在python中mydatabase.db使用的数据库文件sqlite3(特别是python 2.7)我想在我的数据库中生成这个模式.

我知道通过命令行可以执行以下操作

sqlite3 mydatabase.db < myschema.sql
Run Code Online (Sandbox Code Playgroud)

或者我可以执行以下操作,但这可能不适用于所有系统:

import os
os.popen("sqlite3 mydatabase.db < myschema.sql")
Run Code Online (Sandbox Code Playgroud)

这不是我所追求的,因为它可能在某些平台上不起作用.

我还想避免这样的事情:

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()
Run Code Online (Sandbox Code Playgroud)

所以解析文件和单独创建表并不是我想要的,我只是在寻找一个python-sqlite等效的命令行工具.

ber*_*eal 7

executescript正是出于这个目的,有一种辅助方法:

with open('myschema.sql') as fp:
    cur.executescript(fp.read())  # or con.executescript 
Run Code Online (Sandbox Code Playgroud)