Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Django inspectdb problema usando banco de dados Oracle


Duas coisas:
  1. Inspectdb não suporta oficialmente oracle (veja Documentos Django - inspectdb ) tempos tristes.
  2. O Django não tem suporte muito forte para esquemas Oracle (veja unresolved Django ticket 6148 ) Portanto, você pode ter mais sorte se conseguir se conectar usando o usuário principal do esquema, tornando o esquema que deseja introspectar no esquema padrão.

Consegui obter uma saída de arquivo de modelo básico alterando o select em introspection.py. Para mim, alterei a função get_table_list em django/db/backends/oracle/introspection.py (em torno da linha 40) de:
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()]

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

Mas desisti do django quando li o suporte geral ruim para esquemas no Oracle