关于 Oracle 支持,C\xc3\xa9sar\ 的答案是正确的。然而,我能够通过修改django\\db\\backends\\oracle\\introspection.py两个地方来生成一个粗略的模型。
cursor.execute将行更改get_table_list为:
cursor.execute("SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = \'OTHERSCHEMA\'")\nRun Code Online (Sandbox Code Playgroud)\n\nuser_table_cols将ALL_TAB_COLUMNS第一cursor.execute行中的改为get_table_description:
cursor.execute("""\n SELECT\n column_name,\n data_default,\n CASE\n WHEN char_used IS NULL THEN data_length\n ELSE char_length\n END as internal_size\n FROM ALL_TAB_COLUMNS\n WHERE table_name = UPPER(%s)""", [table_name])\nRun Code Online (Sandbox Code Playgroud)\n\n接下来,将第二cursor.execute行更改get_table_description为:cursor.execute("SELECT * FROM OTHERSCHEMA.%s WHERE ROWNUM < 2" % self.connection.ops.quote_name(table_name))
由于这是一个遗留数据库,其中策略阻止对数据库进行更改,因此这对于一次性运行来说是很好的。
\n\n模型完成后还需要进行一些更改。我的一些课程似乎缺少主键引用和外键引用。我将手动添加这些。
\n\n我所做的最后一个更改是修改所有实例class Meta:以引用正确的架构:
class Meta:\n db_table = u\'"SCHEMA"."TABLE_NAME"\' # Notice the quoting needed\nRun Code Online (Sandbox Code Playgroud)\n