Хранение байтов в postgresql

у меня есть текст, который приходит от пользователя (в нем могут иметься эмодзи). И нужно как то сохранить в базе данных тот текст, который пришел от пользователя. Думал над тем, чтобы перевести сообщение в кодировку utf-8, и хранить в базе данных, но выдает ошибку. Вот код:

text_code = (message.text).encode('utf-8')
            
insert_call(f"INSERT INTO catalog (product_name, id) VALUES ({text_code}, {catalog_id});")
update_call("UPDATE users SET admin_panel=%s WHERE chat_id=%s;", (catalog_id, message.chat.id))

Тип колонки id BYTEA

Ошибка:

ERROR: Traceback (most recent call last):
  File "c:\Users\jaNeight\Desktop\rutor-shop\automate-shop\telegram.py", line 188, in polling
    bot.polling(none_stop=True)
  File "C:\Users\jaNeight\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\__init__.py", line 658, in polling
    self.__threaded_polling(non_stop, interval, timeout, long_polling_timeout, allowed_updates)
  File "C:\Users\jaNeight\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\__init__.py", line 720, in __threaded_polling
    raise e
  File "C:\Users\jaNeight\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\__init__.py", line 680, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\jaNeight\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\util.py", line 135, in raise_exceptions
    raise self.exception_info
  File "C:\Users\jaNeight\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\util.py", line 87, in run
    task(*args, **kwargs)
  File "c:\Users\jaNeight\Desktop\rutor-shop\automate-shop\telegram.py", line 159, in handle_message
    insert_call(f"INSERT INTO catalog (product_name, id) VALUES ({text_code}, {catalog_id});")
  File "c:\Users\jaNeight\Desktop\rutor-shop\automate-shop\dbase.py", line 28, in insert_call
    cursor.execute(call)
  File "C:\Users\jaNeight\AppData\Local\Programs\Python\Python310\lib\site-packages\psycopg2\extras.py", line 146, in execute
    return super().execute(query, vars)
psycopg2.errors.SyntaxError: syntax error at or near "lDoZnKGDPRyzLSpyMZbhZesCfkxvvEiEDqZkvJdgkeUAxNeSMhoe"
LINE 1: ...roduct_name, id) VALUES (b'\xf0\x9f\x92\x8e', 2966lDoZnKGDPR...
                                   

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

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

Формат колонок VARCHAR, и вместо {text_code}, {catalog_id} -> '{text_code}', '{catalog_id}'

→ Ссылка