|
@@ -33,6 +33,8 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
|
|
|
except AttributeError:
|
|
|
pass
|
|
|
|
|
|
+ cache_bust_counter = 1
|
|
|
+
|
|
|
def get_field_type(self, data_type, description):
|
|
|
# If it's a NUMBER with scale == 0, consider it an IntegerField
|
|
|
if data_type == cx_Oracle.NUMBER:
|
|
@@ -59,7 +61,10 @@ class DatabaseIntrospection(BaseDatabaseIntrospection):
|
|
|
|
|
|
def get_table_description(self, cursor, table_name):
|
|
|
"Returns a description of the table, with the DB-API cursor.description interface."
|
|
|
- cursor.execute("SELECT * FROM %s WHERE ROWNUM < 2" % self.connection.ops.quote_name(table_name))
|
|
|
+ self.cache_bust_counter += 1
|
|
|
+ cursor.execute("SELECT * FROM {} WHERE ROWNUM < 2 AND {} > 0".format(
|
|
|
+ self.connection.ops.quote_name(table_name),
|
|
|
+ self.cache_bust_counter))
|
|
|
description = []
|
|
|
for desc in cursor.description:
|
|
|
name = force_text(desc[0]) # cx_Oracle always returns a 'str' on both Python 2 and 3
|