Подключение к другой базе данных и получение из нее данных в формате json

Моя задача состоит в том, чтобы заполнить две существующие модели City и Province с помощью двух json файлов cities.json' and 'provinces.json. Данные в этих файлах следующие.

provinces.json:

[
    {   "model": "salesnetwork.cities",   
        "id": "1",
        "name": "EA"
    }
]

cities.json:

[
    {   "model": "salesnetwork.cities",
        "id": "1",
        "province_id": "1",
        "name": "Tabriz"
    }
]

Теперь я пытаюсь заполнить мои две модели этими данными. Мои модели выглядят следующим образом.

class Provinces(models.Model):
    name = models.CharField(max_length=255, db_collation="utf8mb3_unicode_ci")

    class Meta:
        db_table = "provinces"


class Cities(models.Model):
    province = models.ForeignKey("Provinces", models.DO_NOTHING)
    name = models.CharField(max_length=255, db_collation="utf8mb3_unicode_ci")

    class Meta:
        db_table = "cities"

(Я виноват в том, что назвал свою модель Cities вместо City и Provinces вместо 'Province'; я создал эти модели с помощью команды inspectdb, и поскольку я не знал, может ли изменение имен этих моделей вызвать проблемы или нет, я решил оставить имена такими, какие они есть). Когда я пытаюсь использовать команду py .\manage.py loaddata provinces.json, я получаю следующую ошибку:

Traceback (most recent call last):
  File "D:\Projects\Navid Motor\Website\Django\NavidMotor.com\.venv\lib\site-packages\django\core\serializers\json.py", line 69, in Deserializer
    objects = json.loads(stream_or_string)
  File "C:\Users\Vahid Moradi\AppData\Local\Programs\Python\Python310\lib\json\__init__.py", line 335, in loads
    raise JSONDecodeError("Unexpected UTF-8 BOM (decode using utf-8-sig)",
json.decoder.JSONDecodeError: Unexpected UTF-8 BOM (decode using utf-8-sig): line 1 column 1 (char 0)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "D:\Projects\Navid Motor\Website\Django\NavidMotor.com\manage.py", line 22, in <module>
    main()
  File "D:\Projects\Navid Motor\Website\Django\NavidMotor.com\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "D:\Projects\Navid Motor\Website\Django\NavidMotor.com\.venv\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "D:\Projects\Navid Motor\Website\Django\NavidMotor.com\.venv\lib\site-packages\django\core\management\__init__.py", line 440, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "D:\Projects\Navid Motor\Website\Django\NavidMotor.com\.venv\lib\site-packages\django\core\management\base.py", line 402, in run_from_argv
    self.execute(*args, **cmd_options)
  File "D:\Projects\Navid Motor\Website\Django\NavidMotor.com\.venv\lib\site-packages\django\core\management\base.py", line 448, in execute
    output = self.handle(*args, **options)
  File "D:\Projects\Navid Motor\Website\Django\NavidMotor.com\.venv\lib\site-packages\django\core\management\commands\loaddata.py", line 102, in handle
    self.loaddata(fixture_labels)
  File "D:\Projects\Navid Motor\Website\Django\NavidMotor.com\.venv\lib\site-packages\django\core\management\commands\loaddata.py", line 163, in loaddata
    self.load_label(fixture_label)
  File "D:\Projects\Navid Motor\Website\Django\NavidMotor.com\.venv\lib\site-packages\django\core\management\commands\loaddata.py", line 251, in load_label
    for obj in objects:
  File "D:\Projects\Navid Motor\Website\Django\NavidMotor.com\.venv\lib\site-packages\django\core\serializers\json.py", line 74, in Deserializer
    raise DeserializationError() from exc
django.core.serializers.base.DeserializationError: Problem installing fixture 'D:\Projects\Navid Motor\Website\Django\NavidMotor.com\provinces.json'::

и, судя по всему, на этот раз проблема json.decoder.JSONDecodeError: Unexpected UTF-8 BOM (decode using utf-8-sig): line 1 column 1 (char 0), которую я понятия не имею, как решить, и не нашел никаких инструкций по решению этой проблемы. Я изучил следующие вопросы, но все они касались проблем, связанных с библиотекой json внутри .py файлов, а поскольку моя проблема возникает в командной строке с помощью команд manage.py, я не смог применить эти решения для моей проблемы. Возможные похожие вопросы, но я не смог использовать данные ответы:

  1. Первый
  2. Второй
  3. Третий

Попробуйте вставить json в новый файл в vscode и сохранить его. Ошибкаjson.decoder.JSONDecodeError: Unexpected UTF-8 BOM, потому что ваши json файлы имеют кодировку UTF8-BOM: https://www.coderedcorp.com/blog/how-to-dump-your-django-database-and-load-it-into-/

Вернуться на верх