2012-04-13 10 views
1

私はPythonモジュールMySQLDbを使用して複数のエントリを挿入します(時には300まで)。私のSQLは次のようになります。複数のエントリを挿入した後に主キーのリストを取得

INSERT INTO MyTable (row2,row3) values 
(row2_entry1,row3_entry1),(row2_entry2,row3_entry2),........(row2_entry300,row3_entry300) 

このテーブルの主キーは自動インクリメントされます。私が望むのは、テーブルに入力されたエントリの主キーのリストです。どのようにしてこれをバッチで行うのですか

+0

あなたが取引を行う、と周り 'LAST_INSERT_ID()' – hjpotter92

答えて

0

MySQLのLAST_INSERT_ID()は単なる値を返します。バッチ挿入の場合、最初に挿入された行の主キー値が返されます。

GUIDトークンを使用して、バッチ挿入操作の一部である行を追跡することができます。 batch_insert_idという名前の追加のvarchar(32)列をテーブルに追加します。一括挿入中は、既知のGUID値を使用します。挿入後、selectクエリを実行して、挿入された行の主キーを取得します。

import uuid 

batch_insert_id = uuid.uuid4().hex 
# Execute your batch insert query, with batch_insert_id 
# as value of batch_insert_id for all rows 
cursor.execute("SELECT id FROM mytable WHERE batch_insert_id = '%s'", (batch_insert_id,)) 
primary_keys = [row[0] for row in cursor.fetchall()] 
+0

巧妙な仕事を使用してIDを取得することができます。私はこれをすることが許されるかどうかはわかりませんが、あなたの解決策がうまくいくので、私はあなたに正しい答えを与えます。助けてくれてありがとう。 – b10hazard

関連する問題