2009-06-18 5 views
2

私は一括挿入を行うことができるORMを探していますが、Pythonクラスに基づいてコードを作成することもできます。私はsqlobjectを試してみましたが、テーブルを作成するのにうまくいきましたが、挿入したいデータ量のために挿入が許容できないほど遅かったです。そのようなORMが存在しない場合は、入力のサニタイズやSQL文字列の作成などの作業に役立つクラスのポインタがあれば理解できます。テーブルの作成と一括挿入が可能なPython ORM?

+0

"バルク" と "ORM" は、通常一緒に行っていません。あなたがバルクで何を意味するかによって異なりますが、大部分の人は、バルクを考えると生のSQLを考えるので、ORMは難しくなります。どういう意味ですか?あなたは何をしたいのかのコードサンプルを与えることができますか? –

+0

SQLObjectは、各オブジェクトを作成時にデータベースに挿入します。一度にたくさんのオブジェクトを挿入したい、あるいは少なくともトランザクションを設定して、次の挿入に行く前に各挿入がコミットされないようにしたい。 – Jared

答えて

5

SQLAlchemyをお試しください。

+1

私たちはSQLAlchemyを使用しています。テーブルの作成や一括挿入には問題ありません。データベース(およびDBAPI)に応じて、SQLQAlchemyには一括挿入用のexecutemany()があります(http://www.sqlalchemy.org/docs/05/sqlexpression.html#executing-multiple-statementsを参照)。 – stephan

0

私はsqlalchemyが一括挿入を持っていると信じていますが、これまで使用していません。しかし、これはこのthis reviewerに従ったベンチマークテストに有利に積み重なる。

編集:SQLAlchemyをどのように使用しているのかはわかりません。実際のORMであれ、クエリコードであれ、はっきりしません。ブログのエントリーを読んで、私はORMで遊ぶことを前提としていましたが、いくつかのコメントは彼がクエリコードを使用していると思われ、ORMならもっと遅くなるでしょう。

0

私はsqlobjectに慣れていませんが、一括挿入の場合は通常、これがトランザクション内で行われていることを確認して、各操作に対してコミットしないようにしてください。

sqlobjectでは、トランザクションオブジェクトを使用してコミットを制御することができます。これが正しく機能するには、おそらくデフォルトのAutoCommitフラグをオンにする必要があります。

http://www.sqlobject.org/SQLObject.html#id45