1

問題は、MySQLデータベースにjson文字列を挿入することです。私のPythonプログラムではjson.dumps(d)、dが辞書である結果としてjsonを取得します。コードの挿入は次のとおりです。

        query = ("INSERT INTO bm_triesJsons VALUES (%s, %s, %s);"%
                 (article_id, revision_number, jsn))
        print query
        cur.execute(query)

問題は引用符であるように見えます。引用符の前にエスケープ記号はありません。どうすればこれを修正できますか?

4

1 に答える 1

4

クエリを実行するときは、値に対してパラメータ化されたアプローチを使用します。ドライバーはエスケープを処理します。

query = "INSERT INTO bm_triesJsons VALUES (%s, %s, %s);"
cur.execute(query, (article_id, revision_number, jsn))

MySQLdbが使用するエスケープ機能に直接手動でアクセスする場合は、次のように実行できます。

c = MySQLdb.connection()
print c.escape_string('{"foo":"bar"}')
# {\"foo\":\"bar\"}
于 2012-07-16T04:33:53.460 に答える