سؤال

من الناحية المثالية ، أود أن أكون قادرًا على فعل شيء مثل:

id_of_new_row = cursor.lastrowid()

حيث أحصل على معرف الصف الذي تم إنشاؤه حديثًا أو معدّلًا. ولكن هذا غير متوفر من خلال PSYCOPG2. بدلاً من ذلك ، لقد جربت هذا:

id_of_new_row = cursor.execute('INSERT INTO this_table (value1, value2, value3) VALUES (%s, %s, %s) RETURNING id', (some_value1, some_value2, some_value3))

وهذا لا يعمل ، ربما لأنه لن يعرف الهوية إلا بعد الالتزام ...

مساعدة!

هل كانت مفيدة؟

المحلول

من المؤكد أنه سيعرف المعرف بمجرد انتهاء الأمر ، وهكذا يتم تنفيذ العودة. تحتاج إلى جلبه فعليًا ، لذا شيء مثل:

cursor.execute("INSERT INTO .... RETURNING id")
id_of_new_row = cursor.fetchone()[0]

يجب أن تعمل في السيناريو الخاص بك.

نصائح أخرى

أعمال العودة على postgresql> = 8.2

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top