hereにあるヒントを使用して、python dict から MySQL 挿入を作成しようとしています。構文が正しくないため、MySQL エラーが発生します。私のクエリでは、フィールド名が一重引用符で囲まれているという問題を追跡しました。私のコードは次のとおりです。
d=dict(a='pepe',b=4,c='potamo')
qmark = ", ".join(['%s'] * len(d))
sql = "INSERT INTO db.table ({}) VALUES ({})".format(qmark,qmark)
c.execute(sql,(d.keys() + d.values())
mysql ログを見ると、次のようになります。
INSERT INTO db.table ('a', 'b', 'c') VALUES ('pepe', 4, 'potamo')
これにより、mysql 例外 (構文エラー) が発生します。MySQLコマンドラインで文を使用すると、同じエラーが発生し、フィールドから一重引用符を手動で削除すると修正されます。
INSERT INTO db.table (a,b,c) VALUES ('pepe',4,'potamo')
したがって、これらの一重引用符を削除する最善の方法は何か、またはcursor.execute()
(Mysqldb の一部で) 修正する方法があるかどうか疑問に思っています。これまでのところ、次のようなことしか考えられません。
str(d.keys()).replace("'","") + str(d.values())
次に、結果の str を分割してリストに戻し、 にフィードしcursor.execute()
ます。または作成する
l=d.keys()
'
次に、リストの各要素から の前に を削除します。
execute(sql,(l + d.values())
すべてが醜く見えます。