Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Django inspectdb-Problem bei Verwendung der Oracle-Datenbank

Zwei Dinge:

  1. Inspectdb unterstützt Oracle nicht offiziell (siehe Django Docs - inspectdb ) traurige Zeiten.
  2. Django bietet keine sehr starke Unterstützung für Oracle-Schemas (siehe ungelöstes Django-Ticket 6148 ) Sie haben also möglicherweise mehr Glück, wenn Sie in der Lage sind, eine Verbindung mit dem Hauptbenutzer für das Schema herzustellen und das Schema, das Sie überprüfen möchten, zum Standardschema zu machen.

Ich konnte eine grundlegende Modelldateiausgabe erhalten, indem ich die Auswahl in introspection.py änderte. Für mich habe ich die Funktion get_table_list in django/db/backends/oracle/introspection.py (um Zeile 40) geändert von:

def get_table_list(self, cursor):
    "Returns a list of table names in the current database."
    cursor.execute("SELECT TABLE_NAME FROM USER_TABLES")
    return [row[0].lower() for row in cursor.fetchall()]

An

def get_table_list(self, cursor):
    "Returns a list of table names in the current database."
    cursor.execute("SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = 'SCHEMA_TO_QUERY'")
    return [row[0].lower() for row in cursor.fetchall()]

Aber ich habe Django aufgegeben, als ich die insgesamt schlechte Unterstützung für Schemas in Oracle gelesen habe