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

Django inspectdb-problem ved hjælp af Oracle-database

To ting:

  1. Inspectdb understøtter ikke officielt Oracle (se Django Docs - inspectdb ) triste tider.
  2. Django har ikke særlig stærk understøttelse af Oracle-skemaer (se uløst Django-billet 6148 ) Så du kan have bedre held, hvis du er i stand til at oprette forbindelse ved hjælp af hovedbrugeren til skemaet, hvilket gør det skema, du ønsker at introspektere, til standardskemaet.

Jeg var i stand til at få en grundlæggende modelfil-output ved at ændre en select i introspection.py. For mig ændrede jeg funktionen get_table_list i django/db/backends/oracle/introspection.py (omkring linje 40) fra:

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

Til

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

Men opgav django, da jeg læste den overordnede dårlige understøttelse af skemaer i Oracle



  1. SSL-forbindelsesfejl ved forbindelse til RDS MySQL fra Django

  2. Oracle opsætter et globaliseringsstøttemiljø

  3. mysql Kunne ikke læse auto-increment-værdien fra storage-motoren

  4. Gruppér efter flere kolonner på en enkelt MySql-lagret procedure