Ошибка в python: 'UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc2 in position 61: invalid continuation byte' при использовании psycopg2
у меня возникла проблему, которую я не понимаю как решить, в ниже представленном коде я пытаюсь создать таблицу в базе данных psql с помощью psycopg2, на бумаге, этот код должен создавать отдельную таблицу, но на деле он выводит такую вот ошибку: 'UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc2 in position 61: invalid continuation byte' Я немного порылся в интернете, уловил суть, это из-за того, что разная кодировка и я это помню, что у windows-а нашего великого не utf-8, но все решение этой проблемы были связаны с open(), там где можно указать способ кодировки (encoding), в этом же файле я просто не представляю как это сделать, хотелось бы объяснение по работе этой системы и конечно же решения.
import psycopg2
from config import host, user, password, db_name
connection = psycopg2.connect(
dbname=db_name,
user=user,
password=password,
host=host
)
try:
with connection.cursor() as cursor:
cursor.execute('CREATE TABLE client('
'client_id INT PRIMARY KEY,'
'first_name VARCHAR(50),'
'second_name VARCHAR(50),'
'third_name VARCHAR(50),'
'age INT,'
'card_number INT,'
'gender VARCHAR(10),'
'cash_balance DECIMAL(8, 2))')
connection.commit()
except Exception as _ex:
print('Connection error', _ex)
finally:
if connection:
connection.close()
Изменено: Вот скрин с PgAdmin-а, и я не понимаю, что это, но вдруг это что-то важное (Я переустановил PostgreSQL)
Ответы (2 шт):
Возможно, проблема в самом запросе к базе данных. Может быть, из-за вашей формы запроса ломается его структура.
Я бы предложил сделать так:
try:
with connection.cursor() as cursor:
cursor.execute('''
CREATE TABLE client(
client_id INT PRIMARY KEY,
first_name VARCHAR(50),
second_name VARCHAR(50),
third_name VARCHAR(50),
age INT,
card_number INT,
gender VARCHAR(10),
cash_balance DECIMAL(8, 2)
)
''')
Можно еще проверить кодировку самой базы данных:
SHOW SERVER_ENCODING;
После чего можно явно указать ее в коде:
connection = psycopg2.connect(
dbname=db_name,
user=user,
password=password,
host=host,
options="-c client_encoding=UTF8"
)
Можно еще все это завернуть в двойной try
, чтобы отловить все ошибки.
И так, входе всего разбирательства у меня получилось создать БД этим способом Вывод таков: Похоже, что какие-либо данные, может быть пароль, может быть юзер БД были введены неверно, из-за этого пайтон не мог подключиться к БД и выводило такую вот ошибку Как я это пофиксил: Просто полностью переустановил БД, поставил новый пароль и юзера, которых сохранил и ввёл их для коннекта, новая таблица появилась в pgAdmin-е
Что бы у вас такого не случилось - проверяйте, правильные ли вы данные вводите для коннекта с базой данных