diff options
author | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2016-11-30 17:21:57 +0100 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2016-11-30 11:21:57 -0500 |
commit | e17f40f4b55f5bf624a190e67a0c83af4be043b8 (patch) | |
tree | 84dbe776c049ac5fa6e69a29fbb4e8d9089e8492 /django/db/backends/oracle/introspection.py | |
parent | 6f43b2b8a55d72d1e8e04163ff0c2091cf6b8ce5 (diff) | |
download | django-e17f40f4b55f5bf624a190e67a0c83af4be043b8.tar.gz |
Refs #24245 -- Added introspection for database defaults on Oracle.
Diffstat (limited to 'django/db/backends/oracle/introspection.py')
-rw-r--r-- | django/db/backends/oracle/introspection.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/django/db/backends/oracle/introspection.py b/django/db/backends/oracle/introspection.py index f0d5f080b6..2d91cc049f 100644 --- a/django/db/backends/oracle/introspection.py +++ b/django/db/backends/oracle/introspection.py @@ -60,6 +60,13 @@ class DatabaseIntrospection(BaseDatabaseIntrospection): def get_table_description(self, cursor, table_name): "Returns a description of the table, with the DB-API cursor.description interface." + # user_tab_columns gives data default for columns + cursor.execute(""" + SELECT column_name, data_default + FROM user_tab_cols + WHERE table_name = UPPER(%s)""", [table_name]) + columns_default = {column: default if default != 'NULL' else None for column, default in cursor.fetchall()} + self.cache_bust_counter += 1 cursor.execute("SELECT * FROM {} WHERE ROWNUM < 2 AND {} > 0".format( self.connection.ops.quote_name(table_name), @@ -67,8 +74,9 @@ class DatabaseIntrospection(BaseDatabaseIntrospection): description = [] for desc in cursor.description: name = force_text(desc[0]) # cx_Oracle always returns a 'str' on both Python 2 and 3 + default = columns_default[name] name = name % {} # cx_Oracle, for some reason, doubles percent signs. - description.append(FieldInfo(*(name.lower(),) + desc[1:])) + description.append(FieldInfo(*(name.lower(),) + desc[1:] + (default,))) return description def table_name_converter(self, name): |