3

我已经使用 django-pyodbc-azure 将 django 连接到 SQL Server。我是 django 的新手。我在 django models.py 中创建了一个模型,并且能够将模型迁移到 SQL Server。所有适当的表都已创建。

我有最终将由应用程序提供的历史数据。是否可以访问在同一个数据库中保存此历史数据的现有表?还是简单地将历史数据加载到 django 创建的新表中更聪明?

从概念上讲,我认为可以为现有表制作模型(通过 inspectdb 或手动)。但是,添加这些模型会导致 django 在执行迁移时创建新表,而不是识别表已经存在。

什么是最佳实践?我认为创建所有新表,然后在代理中设置作业以将历史数据加载到这些新表中可能会更干净。

4

1 回答 1

1

如果您 100% 确信您可以在 Django 模型中描述历史表的确切格式和约束,那么您可以尝试这样做并运行makemigrations然后使用--fake-initial标签。当您使用现有数据库初始化新应用程序时,这是推荐的过程。

本质上,您是在告诉 Django 表应该是什么样子,而不是要求它为您设置表,因为它已经存在。但是,请确保 Django 具有正确的表名称 -自定义表名称可能会很棘手。

但是,如果您对建立一个完美描述您的表的模型有任何疑问,请创建一个新表并将旧数据加载到其中。这样会更简洁,因为您知道 Django 拥有它需要的有关表的所有信息。如果您的旧数据不干净或可能包含重复数据,它还允许您对传入数据应用新的约束。

于 2017-08-30T17:03:55.703 回答