1

次のような "" を含むデータを持つデータベースにアクセスしようとしました。

トムは猫です。

このコードを使用すると:

マイデータ = 100; myKey = 'トムは猫です。'

myCursor.execute('UPDATE MyTable SET MyField = %d WHERE MyTable.Key == "%s"' % (myData, myKey))

このエラーが発生しました

sqlite3.OperationalError:「is」付近:構文エラー

%s を "" で囲んでいることに注意してください。また、一重引用符を使用したり、\ を追加したりしようとしましたが、どちらも機能しませんでした。これを解決する方法はありますか?

4

2 に答える 2

4

DB-API パラメータ置換を使用し、フォーマットは sqlite3 ライブラリに任せます。

myCursor.execute('UPDATE MyTable SET MyField = ? WHERE MyTable.Key == ?', (myData, myKey))
于 2011-10-10T14:37:54.180 に答える
-2

SQL ステートメントの周囲の文字列に二重引用符を使用しないでください。したがって、ステートメントでは単一引用符を使用する必要があります。

myData = 100 
myKey = 'Tom "is" a cat.'
myCursor.execute('''UPDATE MyTable SET MyField = %d WHERE MyTable.Key ='%s' ''' % (myData, myKey))

トリプル一重引用符を使用すると、テキスト エディターを使用しているかのように一重引用符を使用できます。

于 2011-10-10T14:39:09.730 に答える