0

dbに挿入するエントリを、フィールド名と同じ辞書キーを持つ辞書として保存しました。これを直接行う簡単なコマンドはありますか?

現在、これは私が使用するコマンドです

cursor.execute('INSERT INTO jobs (title, description, country, state, city) 
VALUES (%(title)s, %(description)s, %(country)s, %(state)s, %(city)s)', (job_data.get_parsed_dictionary()))

多くの場合、Pythonにはあらゆる種類のもののための非常に多くのエレガントなライブラリメソッドがあります。私はそれをはるかに簡単にするそのようなコマンドが1つあることを望んでいます。

4

1 に答える 1

0

列名を生成できます。

data = job_data.get_parsed_dictionary()

columns = ', '.join(data.keys())
parameters = ', '.join(['%({0})s'.format(k) for k in data.keys()])
query = 'INSERT INTO jobs ({columns}) VALUES ({parameters})'.format(columns=columns, parameters=parameters)

cursor.execute(query, data)

結果のキーがSQLクエリに安全に補間できることを確認する必要があります.get_parsed_dictionary()SQLインジェクション攻撃ベクトルを覚えておいてください)。考えられる列名のリストが手元にある場合は、それをチェックして、その中にある可能性のある「余分な」キーを除外しますdict

于 2012-11-26T16:04:04.150 に答える