Oracle
 sql >> Base de données >  >> RDS >> Oracle

Django inspectdb issue utilisant la base de données Oracle

Deux choses :

  1. Inspectdb ne prend pas officiellement en charge Oracle (voir Django Docs - inspectdb ) des moments tristes.
  2. Django ne prend pas très bien en charge les schémas Oracle (voir ticket Django non résolu 6148 ) Ainsi, vous aurez peut-être plus de chance si vous parvenez à vous connecter en utilisant l'utilisateur principal du schéma, en faisant du schéma que vous souhaitez introspecter le schéma par défaut.

J'ai pu obtenir une sortie de fichier de modèle de base en modifiant la sélection dans introspection.py. Pour moi, j'ai changé la fonction get_table_list dans django/db/backends/oracle/introspection.py (vers la ligne 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()]

À

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

Mais j'ai abandonné Django quand j'ai lu la mauvaise prise en charge globale des schémas dans Oracle