Césarの答えは、Oracleのサポートに関して真実です。django\db\backends\oracle\introspection.py
しかし、 2箇所修正することで大まかなモデルを生成することができました。
cursor.execute
の行を次のように変更get_table_list
します。
cursor.execute("SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = 'OTHERSCHEMA'")
の最初の行のuser_table_cols
toを次のように変更します。 ALL_TAB_COLUMNS
cursor.execute
get_table_description
cursor.execute("""
SELECT
column_name,
data_default,
CASE
WHEN char_used IS NULL THEN data_length
ELSE char_length
END as internal_size
FROM ALL_TAB_COLUMNS
WHERE table_name = UPPER(%s)""", [table_name])
次に、2cursor.execute
行目を次のように変更get_table_description
します。cursor.execute("SELECT * FROM OTHERSCHEMA.%s WHERE ROWNUM < 2" % self.connection.ops.quote_name(table_name))
これは、ポリシーによってデータベースへの変更が禁止されているレガシー データベースであるため、1 回限りの実行には適していました。
モデルが完成したら、さらにいくつかの変更が必要です。いくつかのクラスで、主キー参照と外部キー参照が欠落しているようです。これらを手動で追加します。
私が行った最後の変更はclass Meta:
、正しいスキーマを参照するようにすべてのインスタンスを変更することでした:
class Meta:
db_table = u'"SCHEMA"."TABLE_NAME"' # Notice the quoting needed