Подключение к другой базе данных и получение из нее данных в формате 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, я не смог применить эти решения для моей проблемы.
Возможные похожие вопросы, но я не смог использовать данные ответы:
Попробуйте вставить 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-/