2011-12-29 12 views
2

私はdict形式でデータの行を持っています。それをmysqlテーブルに挿入する簡単な方法はありますか?私はdictをカスタムSQLクエリに変換するカスタム関数を書くことができますが、私はより直接的な代替方法を探しています。MySQLdbはテーブルにdictを挿入します

答えて

2

MySQLDBには、このような直接操作を可能にするものはありません。これは、この目的のためのカスタム関数を含む、さまざまな答えに共通する問題です。

私の経験では、ほとんどの場合、パラメタライズされたSQLを書き留めて書き込むのが最善です。あなたが同じことをたくさんしているのであれば、それをユーティリティ関数に分解することを検討します。

ただし、パラメータを使用して静的SQLを手書きしている場合は、ほとんどのセキュリティおよびバグ関連の問題が解決されます。どこから来たデータの辞書(?)に基づいてSQLを始めるときは、はるかに注意する必要があります。

要約すると、単にクエリを作成し、パラメータを使用し、ドキュメントをうまく処理すれば、コードは読みやすくメンテナンス可能で安全です。

(注:ORMの一部の支持者、等...同意しない場合があります...これは、単純で信頼性が何であったかについて多くの経験に基づいた意見である、と私たちのチームのために働いていた)

4

まあ... paramstyleのドキュメントによると:

「フォーマット」= ANSI Cのprintfフォーマットコードに設定します。 '... WHERE name =%s'。 conn.execute()にマッピングオブジェクトが使用されている場合、インターフェイス は実際には 'pyformat' = Python拡張フォーマットコードを使用します。 '... WHERE name =%(name)s'です。

curs.execute("INSERT INTO foo (col1, col2, ...) VALUES (%(key1)s, %(key2)s, ...)", dictionary)

key1key2など:ただし、APIは現在だから、それはだけの問題でなければなりませんparamstyle

に複数のスタイルの 仕様を許可していません。辞書のキーになります。

免責事項:私はこれを自分で試していない:)

編集:ええ、それを試してみました。できます。

関連する問題