2

Pythonのsqlite3データベースに保存されているutf-8でエンコードされた値を抽出しようとすると問題が発生します。

>> import sqlite3
>> connection=sqlite3.connect('mySQLite3DB.db')
>> cursor=connection.cursor()
>> word = unichr(2675)+unichr(37) # ੳ%
>> cursor.execute('select distinct col1 from table1 where col1 like ? limit 3', word)
---------------------------------------------------------------------------
ProgrammingError                          Traceback (most recent call last)
/Users/punjcoder/code/<ipython-input-10-358f7ffe8df0> in <module>()
----> 1 cursor.execute('select distinct col1 from table1 where col1 like ? limit 3', word)

ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 2 supplied.

ここで、Unicodeを手動で挿入してクエリを実行すると、実行されます。ただし、テキストを取得することはできませんが、代わりにptrをバッファリングします。

>> cursor.execute('select distinct col1 from table1 where col1 like "ੳ%" limit 3')
<sqlite3.Cursor at 0x10dab8500>
>> for row in cursor.fetchall():
>>      print row
(<read-write buffer ptr 0x10dabf898, size 3 at 0x10dabf858>,)

私はすでに以下のリンクを見てきましたが、それを機能させる方法を見つけることができないようです。私はPython2.7.2とSQLite3.7.10に取り組んでいます。よろしくお願いします。

4

1 に答える 1

3

試す:

 cursor.execute('select distinct col1 from table1 where col1 like ? limit 3', [word])

wordUnicode文字列を反復可能として扱い、各文字を個別に表示していることを期待しています。

于 2012-04-17T16:35:02.380 に答える