使用 Django 访问 SQL 服务器 Table 中的现有数据

Accessing Existing Data in a SQL Server Table with Django

我使用 django-pyodbc-azure 将 django 连接到 SQL 服务器。我是 django 的新手。我在 django models.py 中创建了一个模型,并且能够将该模型迁移到 SQL 服务器。所有正确的 table 都已创建。

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

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

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

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

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

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