Проблема с кодировкой при подключении Django к Postgresql
Я не могу подключить Django к базе данных PostgreSQL. Он показывает мне проблему с кодировкой:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 86: invalid start byte
Проблема заключается в этой строке:
File "C:\Users\Robo\Desktop\Stock\venv\Lib\site-packages\psycopg2\__init__.py", line 122, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
Я пытался изменить кодировку в опции Settings, но безрезультатно.
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": "Stocks",
"USER": "postgres",
"PASSWORD": "password",
"HOST": "127.0.0.1",
"PORT": "5432",
"encoding": "utf-8",
}
}
У меня сильное ощущение, что ваш пакет psycopg2
слишком старый. Возможно, какая-то старая версия была установлена как зависимость для другого пакета. Обновите его с помощью: pip install --upgrade psycopg2
.
Словарь не работает с ключевым словом "encoding"
. Если вы хотите указать кодировку, сделайте это следующим образом:
DATABASES = {
"default": {
"ENGINE": "django.db.backends.postgresql",
"NAME": "Stocks",
"USER": "postgres",
"PASSWORD": "password",
"HOST": "127.0.0.1",
"PORT": "5432",
"OPTIONS": {
"options": "-c client_encoding=utf8"
}
}
}
Скорее всего, это проблема с Psycopg; он вызывает много проблем, особенно в некоторых релизах 2.x. Попробуйте откатиться на 2.9.9, если у вас есть файл requirements.txt, вы можете найти пакет в нем и изменить версию или, как предложил @Tarquinius, установить его через терминал.