django - 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来提高效率(在之前过滤数据列表以避免重复或重复)

译文:来源   文章分类: django database python-3.x automation django-2.0

相关文章:

django - Django与PostgreSQL的连接:“对等身份验证失败”

python - 从Django注册表单中删除第二个密码输入

python - 将子域包含到Django站点地图URL中的正确方法是什么?

python - 从Python中的名称获取属性的类?

python - 似乎无法找到如何在App Engine中检查有效电子邮件的方法

python - Django South:如何与多个安装的代码库和一个中央数据库一起使用?

python - 当输出到HTML时,为什么我的字符串后面加了一个冒号

python - 如何动态地将HTML类添加到Django模板“ for-loop”?

python - 你能在Sqlite3(使用Django)中实现不区分大小写的“唯一”约束吗?

python - Django动作的默认参数