将数据从外部源同步到django项目中使用的db?

时间:2019-02-12 18:30:07

标签: python mysql django database data-synchronization

我每天晚上都需要同步csv文件中的数据,以更新django项目中的数据(我使用mysql作为后端)。数据包含用户信息-有时将要删除用户,有时必须添加新用户,有时有关特定用户的某些信息已更改并且需要更新。我需要保持同步。是否有内置功能可以做到这一点(即manage.py/django-admin)?我是否可以编写python脚本并使用django模型处理数据?直接绕过模型直接使用数据库中的表可以吗?什么是最佳做法?

如果有帮助,我正在使用Python 3.7和Django 2.1。

1 个答案:

答案 0 :(得分:1)

没有预构建的命令可能会满足您的确切需求,但是python具有不错的csv读取实用程序,您可以编写自定义的Django command来读取csv文件并添加,删除或更新您的csv文件用户模型。

除非有特殊要求(例如,庞大的数据集或其他约束),否则我建议与Django的模型层进行交互以进行更改,而不是直接与数据库进行交互。这样,如果您对用户模型进行了任何特殊验证,而这些验证没有在数据库级别上显示(选择,整数范围等),则可以避免引入数据不一致的情况。

最后的想法-在您的命令中,考虑使用Django ORM提供的以下出色方法:Manager.get_or_createManager.update_or_create。它们有助于避免重复数据,并优雅地告诉ORM就地创建或修改等。

祝你好运!