Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Problem z Django inspectdb przy użyciu bazy danych Oracle

Dwie rzeczy:

  1. Inspectdb oficjalnie nie obsługuje Oracle (patrz Dokumentacja Django — inspekcja db ) smutne czasy.
  2. Django nie ma bardzo silnego wsparcia dla schematów Oracle (patrz nierozwiązany bilet 6148 Django ) Więc możesz mieć więcej szczęścia, jeśli jesteś w stanie połączyć się za pomocą głównego użytkownika schematu, dzięki czemu schemat, który chcesz introspekcji, będzie schematem domyślnym.

Udało mi się uzyskać podstawowy plik wyjściowy modelu, zmieniając zaznaczenie w introspection.py. U mnie zmieniłem funkcję get_table_list w django/db/backends/oracle/introspection.py (około linii 40) z:

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

Do

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

Ale zrezygnowałem z django, gdy przeczytałem ogólnie słabe wsparcie dla schematów w Oracle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. java - przekazywanie tablicy w procedurze składowanej Oracle

  2. sprawdzanie poprawności dokumentu xml w źródle java Oracle

  3. Oracle:Konwersja adresu IPv4 na liczbę?

  4. Konwersja bazy 36 do bazy 10 tylko przy użyciu SQL

  5. Oracle Joins — porównanie składni konwencjonalnej VS ANSI Składnia