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()

data 变量是一个列表列表,其中包含我要放入数据库中的数据。问题是,当我运行脚本时,出现了 django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. 错误。我使用 PostgreSQL 作为数据库。

我做错了什么?

最佳答案

我知道这就像永远一样但是......

虽然技术上不是脚本,但 Django 允许数据库 seeding通过创建 fixture

文档非常直观。在 Django 中预填充数据库时,这始终是我的首选方法。例如,如果您有汽车模型:

class Cars(models.Model):
    make = models.CharField(max_length=50)
    color = models.CharField(max_length=50)

您可以创建播种夹具 cars.json,例如:

[
  {
    "model":"myapp.cars",
    "pk":1,
    "fields":{
      "make": "Audi",
      "color":"Black"
    }
  },
  {
    "model":"myapp.cars",
    "pk":2,
    "fields":{
      "make": "Aston Martin",
      "color":"Blue"
    }
  }
]

要预填充数据库,只需运行 ./manage.py loaddata cars.json

我发现这是最好的选择,例如,如果您必须为您创建的每个网络应用程序加载所有汽车型号或所有国家及其国旗等数据...

关于Django 2.0 使用脚本填充数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51227687/

相关文章:

python - docker-compose的nginx和django设置

python - Django 开发版本与稳定版本

database - 考虑夏令时将(日期)类型的oracle历史数据转换为unix时间戳

sql - PostgreSQL 存储需要引用资料

python - Pycharm **kwargs 自动完成

python-3.x - 并行进程覆盖进度条 (tqdm)

python - python中的正则表达式和unicode utf-8?

python - 使用 python 将文件上传到 Django 服务器

java - Android数据库最佳实践

python-3.x - 如何替换 Tkinter 应用程序中的图标