1

我正在使用我的 django 项目连接到云中的旧 mysql 数据库。如果需要,我需要在 DB 表中获取数据并插入数据。

我需要为数据库中已经存在的表编写模型吗?如果是这样,则有 90 多张桌子。那么如果我为单个表创建模型会发生什么?除了创建模型和迁移之外,我如何与数据库交谈?django有更好的方法吗?或模型是更好的方法?当我创建模型时,后端会发生什么?它会在同一个数据库中再次创建这些表吗?

4

1 回答 1

1

有几种方法可以连接到遗留数据库;我使用的两种方法是为您需要的旧数据库中的数据创建模型,或者使用原始 SQL。

例如,如果我要在可预见的将来连接到遗留数据库并执行读取和写入,我将创建一个模型,其中只包含我需要作为辅助数据库的外部表中的字段。该方法有据可查,但更耗时。

但是,如果我只从将要停用的旧数据库中读取数据,我将在旧数据库上创建一个只读用户,并使用原始 SQL 来获取我需要的内容,如下所示:

from django.db import connections

cursor = connections["my_secondary_db"].cursor()

cursor.execute("SELECT * FROM my_table")

for row in cursor.fetchall():
    insert_data_into_my_new_system_model(row)

当我们将用户和产品数据迁移到 Django/PostgreSQL 时,我现在正在使用旧网站中的旧版 SQL Server 数据库执行此操作。多年来,这对我很有帮助,并节省了很多时间。我已经使用它在单个应用程序中创建同步例程作为 Django 管理命令,然后当遗留数据库迁移到 Django 时,我已经完全删除了包含所有同步例程的单个应用程序,以便清理休息。祝你好运!

于 2019-10-01T10:24:26.210 回答