django - Django 2.0使用脚本填充数据库

原文 标签 django database python-3.x automation django-2.0

我正试图用一个脚本填充我的django数据库,这样我就不必手动输入数据了。到目前为止,我有以下几点:

from my_app.models import ModelInApp
import django

django.setup()


def add_data(data1, data2):
    d, created = ModelInApp.objects.get_or_create(data1=data1, data2=data2)
    print("- Data: {0}, Created: {1}".format(str(d), str(created)))
    return d


def populate():
    # data is a list of lists
    for row in data:
        data1 = row[0]
        data2 = row[1]
        add_data(data1, data2)


if __name__ == "__main__":
    populate()

数据变量是包含要放入数据库的数据的列表列表。问题是,当我运行脚本时,我得到一个django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.错误。我使用postgresql作为数据库。
我做错什么了?

最佳答案

解决这个问题的快速方法是从django shell(python manage.py shell)填充数据库。没有import djangodjango.setup()的代码应该可以正常工作。快&脏;)
添加数据的超级正确方法是使用数据迁移:https://simpleisbetterthancomplex.com/tutorial/2017/09/26/how-to-create-django-data-migrations.html
另外,考虑使用bulk_create来提高效率(在之前过滤数据列表以避免重复或重复)

相关文章:

mysql - 在数据库的每个选定行前面添加+1

database - 在sqlite数据库中用尽唯一ID

python-3.x - 使用StratifiedShuffleSplit时计算召回指标

python - Pythonic beautifulSoup4:如何从Wikipedia类别的下一页链接中获取剩余标题

python - 如何在不访问数据库的情况下创建具有延迟字段的Django模型实例?

python - 你可以给一个Django应用程序一个详细的名称,以便在整个管理员中使用吗?

django - 通过django通过模板管理pdf,并作为电子邮件的附件发送

django - Django-[Errno 111]拒绝连接

java - 休眠注释(春季),在添加新的布尔列时设置默认值,是否出错?

postgresql - Python3中的psycopg2游标问题