Ошибка в 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)Странность в PgAdmin-е


Ответы (2 шт):

Автор решения: GxdTxnz

Возможно, проблема в самом запросе к базе данных. Может быть, из-за вашей формы запроса ломается его структура.

Я бы предложил сделать так:

    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, чтобы отловить все ошибки.

→ Ссылка
Автор решения: sunless

И так, входе всего разбирательства у меня получилось создать БД этим способом Вывод таков: Похоже, что какие-либо данные, может быть пароль, может быть юзер БД были введены неверно, из-за этого пайтон не мог подключиться к БД и выводило такую вот ошибку Как я это пофиксил: Просто полностью переустановил БД, поставил новый пароль и юзера, которых сохранил и ввёл их для коннекта, новая таблица появилась в pgAdmin-е

Что бы у вас такого не случилось - проверяйте, правильные ли вы данные вводите для коннекта с базой данных

→ Ссылка