我正试图用一个脚本填充我的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 django
和django.setup()
的代码应该可以正常工作。快&脏;)
添加数据的超级正确方法是使用数据迁移:https://simpleisbetterthancomplex.com/tutorial/2017/09/26/how-to-create-django-data-migrations.html
另外,考虑使用bulk_create
来提高效率(在之前过滤数据列表以避免重复或重复)