sql >> Database >  >> RDS >> Oracle

Django inspectdb-probleem met Oracle-database

Twee dingen:

  1. Inspectdb ondersteunt oracle officieel niet (zie Django Docs - inspectdb ) trieste tijden.
  2. Django biedt geen erg sterke ondersteuning voor Oracle-schema's (zie onopgelost Django-ticket 6148 ) U heeft dus meer geluk als u verbinding kunt maken met de hoofdgebruiker voor het schema, waardoor het schema dat u wilt introspecteren het standaardschema is.

Ik kon een basismodelbestandsuitvoer krijgen door de select in introspection.py te wijzigen. Voor mij heb ik de functie get_table_list in django/db/backends/oracle/introspection.py (rond regel 40) gewijzigd van:

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

Naar

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

Maar gaf django op toen ik de algehele slechte ondersteuning voor schema's in Oracle las



  1. Hoe extraheer je een numerieke waarde uit een string in een MySQL-query?

  2. Hoe een kolom toevoegen als deze niet bestaat op PostgreSQL?

  3. MySQL:draaien + tellen

  4. Beschikbare gebruikers op een bepaalde datum weergeven