From 215647c0f7614abe4fe0cd76bc70dd7b02f829b4 Mon Sep 17 00:00:00 2001 From: Shai Berger Date: Thu, 16 May 2013 18:30:52 +0300 Subject: [PATCH] Fixed #20386 - Introspection problem on Oracle Made introspection always return a unicode as column name on Oracle. Thanks aaugustin for review and suggestion to use force_text(). --- django/db/backends/oracle/introspection.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/django/db/backends/oracle/introspection.py b/django/db/backends/oracle/introspection.py index ff56dca5c24..608901f0816 100644 --- a/django/db/backends/oracle/introspection.py +++ b/django/db/backends/oracle/introspection.py @@ -1,4 +1,5 @@ from django.db.backends import BaseDatabaseIntrospection, FieldInfo +from django.utils.encoding import force_text import cx_Oracle import re @@ -48,7 +49,8 @@ class DatabaseIntrospection(BaseDatabaseIntrospection): cursor.execute("SELECT * FROM %s WHERE ROWNUM < 2" % self.connection.ops.quote_name(table_name)) description = [] for desc in cursor.description: - description.append(FieldInfo(*((desc[0].lower(),) + desc[1:]))) + name = force_text(desc[0]) # cx_Oracle always returns a 'str' on both Python 2 and 3 + description.append(FieldInfo(*(name.lower(),) + desc[1:])) return description def table_name_converter(self, name):