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

标签 python python-2.7 sqlite

我有一个架构文件 myschema.sql 和一个数据库文件 mydatabase.db 在 python(特别是 python 2.7)中使用 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 

关于python - 如何使用 python 中的模式文件在 sqlite3 中创建 db 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32372353/

相关文章:

python - 将 C 数据类型转换为 Python

python - 使用 keras 神经网络逼近具有多维输出的函数

python - 如何正确舍入半 float ?

python - super 对象的属性

c# - 将TransactionScope隔离级别更改为内存DB中的快照

sqlite - 如何使用 SQLite 从 Firefox cookies 文件中读取数据?

python - 嵌套列表并保存到文本文件中

python - Python姿势估计示例错误

android - 应用程序启动时以编程方式调用 rawQuery

python - 为什么不能 unpickled 这个 set 子类的实例?