当我键入以下内容时,我的SQLite脚本可以正常工作:
.read'dummy.sql'
在SQLite shell中。
但是,以下Python代码未正确执行此操作。第5行出现语法错误。
import sqlite3
db = sqlite3.connect('scheduling.db')
cursor=db.cursor()
a='''.read "scheduling.sql"'''
cursor.execute(a)
db.commit
db.close()
我知道引号做错了。我该如何进行这项工作?
答案 0 :(得分:0)
您不能。程序sqlite3
可以分为两部分:
.read
是一种 meta 命令:解析器打开文件并从中读取行。 AFAIK,sqlite3库中没有任何东西可以模拟该解析器部分,因此您必须手动将行解析为 的SQL语句,然后一次执行一次SQL语句。
答案 1 :(得分:0)
尝试一下。您可以使用“打开”功能从文件中读取查询-这将替换
.read
功能; SQL脚本是带有查询的文本文件。然后运行read_sql_query。
import sqlite3
import pandas as pd
sqlite_file = 'scheduling.db'
conn = sqlite3.connect(sqlite_file)
c = conn.cursor()
f = open('scheduling.sql','r')
sql = f.read()
print pd.read_sql_query(sql, conn)
答案 2 :(得分:0)
我建议的解决方法是像读取任何其他文本文件一样,将.sql文件的内容读取到Python字符串变量中,然后调用executescript
。与execute
不同,executescript
可以在一个调用中执行许多语句。例如,如果您的.sql包含以下内容,它将可以正常工作:
CREATE TABLE contacts (
contact_id INTEGER PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL
);
INSERT INTO contacts (contact_id, first_name, last_name)
VALUES (1, 'John', 'Smith');
这是您需要的完整Python代码段:
import sqlite3
with open('scheduling.sql', 'r') as sql_file:
sql_script = sql_file.read()
db = sqlite3.connect('scheduling.db')
cursor = db.cursor()
cursor.executescript(sql_script)
db.commit()
db.close()