大規模なデータセットを扱う場合、データベースの相互作用を最適化することが重要になります。 PostgreSQL 用の人気のある Python ライブラリである psycopg2 には、複数の行を効率的に挿入するためのメソッドがいくつか用意されています。そのような方法の 1 つが、この質問の主題です。単一のクエリで複数の行を挿入する方法です。
この手法が必要になるのは、挿入する行の数が可変である場合です。質問で述べたように、従来のアプローチでは、文字列連結を使用して、挿入される行を表すタプルのカンマ区切りリストを構築します。ただし、 psycopg2 のexecutemany() メソッドを使用した、より単純で簡潔なアプローチが存在します。
このメソッドは、実行される SQL ステートメントと挿入される行のリストという 2 つの引数を受け取ります。リスト内包表記またはジェネレーター式を使用すると、挿入する行を表すタプルのリストを簡単に作成できます。たとえば、次のコード スニペットは、executemany() を使用して t という名前のテーブルに 3 行を挿入する方法を示しています。
import psycopg2 # Establish a connection to the database conn = psycopg2.connect(host='localhost', user='postgres', password='mypassword', database='mydb') # Create a cursor to execute queries cursor = conn.cursor() # Prepare the SQL statement sql = "INSERT INTO t (a, b) VALUES (%s, %s)" # Create a list of tuples representing the rows to be inserted rows = [(1, 2), (3, 4), (5, 6)] # Execute the query using executemany() cursor.executemany(sql, rows) # Commit the changes to the database conn.commit() # Close the cursor and connection cursor.close() conn.close()
このアプローチでは、必要なコード行が少なく、連結メソッドと比較してコードの可読性が向上します。さらに、executemany() は、特定のケースでパフォーマンスが向上することが知られています。
提供された回答で述べたように、大規模なデータセットを処理するにはデータベース対話の最適化が不可欠です。 psycopg2 では、executemany() を利用することで、開発者が効率的かつ簡単に複数の行を挿入できるようになります。
以上がPsycopg2 を使用して PostgreSQL に複数の行を効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。