ValueError:script参数必须是unicode。 - Python3.5,SQLite3

时间:2016-09-03 17:55:48

标签: python unicode sqlite

我正在编写以下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.

帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

您将脚本文件打开为 binary

with open(script_path,'rb') as f:

这会产生b'...'字节值,而不是Unicode str对象。删除b,并可能为特定的用于解码数据的编解码器添加encoding参数。