Microsoft SQL 2005 データベースにクエリを実行し、データを処理して、更新したデータのキーを自分のマシンのローカルにある sqllite3 データベース ストアに書き込もうとしています。
私が使用しているツールは、python 2.7、pyodbc、および sqllite3 です。私はWindows 7を使用しており、SQLサーバーとpyodbcを使用したSQLネイティブクライアントドライバーを使用してmssql dbに接続しようとしたドライバーは、どちらも同じ結果をもたらします。
私が問題を抱えているフィールドは、mssql のバイナリ (16) である uuid フィールドです。pyodbc を使用してデータをクエリすると、bytearray() で返されます。
これは、次を実行したときに得られる出力です。
id = mycursor.fetchone()
print id
àO÷�eÅO‹1ÝWt'E
repr(id)
bytearray(b'\xe0O\xf7\x1d\x9de\xc5O\x8b1\x0e\xddWt\x91E')
その ID を sqllite3 データベースに挿入すると、次のようになります。
s = sqlite3.connect('tmp.db')
cursor = s.cursor()
s.execute("create table recs(uuid blob)")
s.commit()
s.execute("insert into recs (uuid) values(?)", id)
1 s.execute("recs (uuid) 値 (?) に挿入", id)
ProgrammingError: 提供されたバインディングの数が正しくありません。現在のステートメントは 1 を使用しており、16 個が提供されています。