إرجاع قيمة مع PSYCOPG2
-
23-09-2019 - |
سؤال
من الناحية المثالية ، أود أن أكون قادرًا على فعل شيء مثل:
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
لا تنتمي إلى StackOverflow