浏览代码

Fixed #29759 -- Fixed crash on Oracle when fetching a returned insert id with cx_Oracle 7.

Mariusz Felisiak 6 年之前
父节点
当前提交
da92ec7962
共有 2 个文件被更改,包括 5 次插入1 次删除
  1. 3 1
      django/db/backends/oracle/operations.py
  2. 2 0
      docs/releases/2.1.2.txt

+ 3 - 1
django/db/backends/oracle/operations.py

@@ -226,7 +226,9 @@ END;
 
     def fetch_returned_insert_id(self, cursor):
         try:
-            return int(cursor._insert_id_var.getvalue())
+            value = cursor._insert_id_var.getvalue()
+            # cx_Oracle < 7 returns value, >= 7 returns list with single value.
+            return int(value[0] if isinstance(value, list) else value)
         except (IndexError, TypeError):
             # cx_Oracle < 6.3 returns None, >= 6.3 raises IndexError.
             raise DatabaseError(

+ 2 - 0
docs/releases/2.1.2.txt

@@ -17,3 +17,5 @@ Bugfixes
 
 * Made migrations detect changes to ``Meta.default_related_name``
   (:ticket:`29755`).
+
+* Added compatibility for ``cx_Oracle`` 7 (:ticket:`29759`).