Oracle
 sql >> Database >  >> RDS >> Oracle

Problema di Django inspectdb utilizzando il database Oracle

Due cose:

  1. Inspectdb non supporta ufficialmente Oracle (vedi Documenti Django - inspectdb ) tempi tristi.
  2. Django non ha un supporto molto forte per gli schemi Oracle (vedi biglietto Django non risolto 6148 ) Quindi potresti avere più fortuna se riesci a connetterti utilizzando l'utente principale per lo schema, rendendo lo schema che desideri introspezione lo schema predefinito.

Sono stato in grado di ottenere un output del file di modello di base modificando a select in introspection.py. Per me ho cambiato la funzione get_table_list in django/db/backends/oracle/introspection.py (attorno alla riga 40) da:

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()]

A

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()]

Ma ho rinunciato a django quando ho letto lo scarso supporto generale per gli schemi in Oracle