ホームページ >データベース >mysql チュートリアル >SQLAlchemy ORM を使用して効率的な一括挿入を実行するにはどうすればよいですか?

SQLAlchemy ORM を使用して効率的な一括挿入を実行するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-16 07:58:02288ブラウズ

How can I perform efficient bulk inserts with SQLAlchemy ORM?

SQLAlchemy ORM を使用した一括挿入

データベースにデータを挿入するときは、効率が非常に重要です。デフォルトでは、SQLAlchemy は個々のオブジェクトをテーブルに挿入しますが、一括操作には時間がかかることがあります。

SQLAlchemy は一括挿入をサポートしていますか?

はい。バージョン 1.0.0 以降、SQLAlchemy には一括操作が含まれています。これらにより、単一トランザクションで一括挿入または一括更新を実行できます。

一括挿入を実行する方法

SQLAlchemy ORM を使用して一括挿入を実行するには、次の手順に従います。

  1. 挿入するオブジェクトのリストを作成します。
  2. オブジェクトのリストを引数として渡して、セッションのBulk_save_objects() メソッドを呼び出します。
  3. セッションをコミットして挿入操作を完了します。

例:

s = Session()
objects = [
    User(name="u1"),
    User(name="u2"),
    User(name="u3")
]
s.bulk_save_objects(objects)
s.commit()

セッションによるパフォーマンスの強化

デフォルトでは、SQLAlchemyすべての操作を即座にコミットします。一括挿入のパフォーマンスを向上させるには、自動コミットを無効にし、すべてのオブジェクトが追加された後に手動でコミットします。これにより、単一トランザクションでデータがデータベースに確実にロードされます。ただし、自動コミットを無効にすると、エラーが発生した場合にデータの整合性の問題が発生する可能性があることに注意してください。

自動コミットを無効にするには、セッションの作成時に autocommit パラメータを False に設定します。次に、すべてのオブジェクトが追加された後でセッションを手動でコミットします。

s = Session(autocommit=False)
s.bulk_save_objects(objects)
s.commit()

一括操作を使用し、セッションの使用を最適化することで、一括データ挿入タスクにおける SQLAlchemy ORM アプリケーションのパフォーマンスを大幅に向上させることができます。

以上がSQLAlchemy ORM を使用して効率的な一括挿入を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。