しない 文字列フォーマットを使用してSQL値を補間します。 SQLパラメータを使用する:
SQL = 'INSERT INTO test_table (col1, col2, col3, col4) VALUES (%s, %s, %s, %s)'
cursor.execute(SQL, (var1, var2, var3, var4))
ここで%s
SQLパラメータです。次に、データベースが値のエスケープを処理します( `cursor.executeの2番目の引数として渡されます)。
使用する必要のある構文は、データベースアダプタによって異なります。 %s
を使用するものもあります 、他の人は?
を使用します プレースホルダー用。
それ以外の場合、これらのパラメーターにリストなどのPythonコンテナーを使用することはできません。最初にそれを文字列形式にシリアル化する必要があります。そのためにJSONを使用することもできますが、データベースにクエリを実行するときに、JSONをPython文字列に再度デコードすることも忘れないでください。それが、他の質問に対する答えが伝えようとしたことです。
たとえば、var4
の場合 はリストです。使用できます:
cursor.execute(SQL, (var1, var2, var3, json.dumps(var4)))