我正在编写以下python脚本:
import sqlite3
import sys
if len(sys.argv) < 2:
print("Error: You must supply at least SQL script.")
print("Usage: %s table.db ./sql-dump.sql" % (sys.argv[0]))
sys.exit(1)
script_path = sys.argv[1]
if len(sys.argv) == 3:
db = sys.argv[2]
else:
db = ":memory:"
try:
con = sqlite3.connect(db)
with con:
cur = con.cursor()
with open(script_path,'rb') as f:
cur.executescript(f.read())
except sqlite3.Error as err:
print("Error occured: %s" % err)
我将此程序保存为 sqlite_import.py 。 我有一个名为 test.db 的数据库文件和一个SQL文件 world.sql 。 现在我尝试将程序运行为:
sqlite_import.py test.db world.sql
但它显示我的错误如下:
Traceback (most recent call last):
File "C:\Users\Jarvis\OneDrive\Documents\Python\Python Data Visualization Cookbook, 2E\2 Knowing Your Data\sqlite_import.py", line 21, in <module>
cur.executescript(f.read())
ValueError: script argument must be unicode.
帮我解决这个问题。
答案 0 :(得分:1)
您将脚本文件打开为 binary :
with open(script_path,'rb') as f:
这会产生b'...'
字节值,而不是Unicode str
对象。删除b
,并可能为特定的用于解码数据的编解码器添加encoding
参数。