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

フィールドとエントリが辞書からのものであるPythonでmysqlを更新する方法は?

    文字列補間の使用にリテラル値を入れたくない-SQLインジェクション攻撃は良いことではありません 。代わりに、データベースに関連するプレースホルダー構文を使用します(MySQLは'%s'だと思います)。

    注:私は.formatを使用しています ここで、必要に応じて%を使用するように変更しますが、%はエスケープします

    d = {'col1': 'val1', 'col2': 'val2'}
    sql = 'UPDATE table SET {}'.format(', '.join('{}=%s'.format(k) for k in d))
    print sql
    # 'UPDATE table SET col2=%s, col1=%s'
    

    curを想定 クエリを実行する正しい方法はDBカーソルです:

    cur.execute(sql, d.values())
    

    これが機能するのは、辞書の順序は事実上任意の順序ですが、dictのキー/値の順序はdict(zip(d.keys(), d.values())) == d



    1. Postgresql column=arrayである行を選択します

    2. ERRO1215。MySqlInnoDB

    3. MySQL-InnoDBとMyISAM

    4. 労働時間を保存し、効率的に照会するための最良の方法