私はPythonでMySQLdbモジュールを使用してSQL文を記述しています。私は、私が望むやり方で変数を使用するのは難しい時を過ごしています。ここに私の仕事です:これは動作しませんPythonのSQL文にexecute()/ executemany()を使用
stmt = "\
INSERT INTO Table1\
(name, status)\
SELECT (:name1, :status1)\
FROM dual\
WHERE NOT EXISTS (\
SELECT 1 FROM Table1\
WHERE name =(:name1))"
dic = {"name1":"Bob", "status1":"Active"}
dbcursor.executemany(stmt, dic)
dbconnection.commit()
print("Insertion to Table1 committed\n\n")
、私は最終的にエラーメッセージが表示さnot all arguments converted during string formatting
をロールバックします。辞書の値をハードコードすると、挿入が正常に機能します。ハードコードされた値の代わりに変数を使用する適切な方法を教えてください。
ヒント: '" "" "" "' '三重引用符を使用すると、これらの円記号をすべて使用する必要はありません。 –
すべてがロールバックされている場合は例外がありますか? –
@MartijnPietersはい、「文字列書式中にすべての引数が変換されない」 –