0
私は、次のPythonスクリプトを書いている:ValueError:スクリプトの引数はUnicodeでなければなりません。 - Python3.5、SQLite3の
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.
が、私はこの問題を解決するのに役立ちます。
** utf-8 **、** cp037 **、** cp437 **、** ascii **などのさまざまなコーデックを試してみました。しかし、これのどれも助けられませんでした。 ** utf-8 **: ''utf-8'コーデックでは、位置27のバイト0xb9をデコードできません:無効な開始バイト。 ** cp037 **: "エラーが発生しました:近く" "構文エラー"を使用しています。 ** cp437 **: 'エラーが発生しました:" SQLite ":syntax error'の近くで使用しています。 **今何ですか?** – Harshil
** ** ** Python 2.x **を使用してこのプログラムを実行すると、**エラーなし**が実行されます。 – Harshil
@Harshil:はい、それはPython 2がバイトストリングだからです。 Python 3では、Unicode文字列を指定する必要があります。そのファイルの正しいエンコーディングを見つけなければならないでしょう。そのエンコーディングについてはわかりません。明らかにあなたが使ったコーデックはそうではありません。 –