sql >> データベース >  >> RDS >> Mysql

Pythonを使用してデータベースにリストを挿入します

    元の質問に対する答えは次のとおりです。いいえ、そのようなリストを挿入することはできません。

    ただし、多少の調整を加えることで、%rを使用してそのコードを機能させることができます。 タプルを渡す:

    variable_1 = "HELLO"
    variable_2 = "ADIOS"
    varlist = [variable_1, variable_2]
    print "INSERT INTO table VALUES %r;" % (tuple(varlist),)
    

    残念ながら、このスタイルの変数挿入では、コードがSQLインジェクション攻撃 に対して脆弱になります。 。

    代わりに、PythonのDBAPI を使用することをお勧めします。 挿入するデータに複数の疑問符を使用してカスタマイズされたクエリ文字列を作成します。

    variable_1 = "HELLO"
    variable_2 = "ADIOS"
    varlist = [variable_1,variable_2]
    var_string = ', '.join('?' * len(varlist))
    query_string = 'INSERT INTO table VALUES (%s);' % var_string
    cursor.execute(query_string, varlist)
    

    SQLite3ドキュメント の冒頭の例 疑問符を使用して引数を渡す方法を示し、それらが必要な理由を説明します(基本的に、変数の正しい引用を保証します)。



    1. キーワードによるOracleパーティション

    2. 複数のJOINがクエリに適していない、またはオプティマイザの邪魔にならない理由

    3. SQLServerの計算列のリストを返す

    4. PHPコードがリモートのMySqlデータベースに接続しないのはなぜですか?