как добавить байт в массив Postgres bytea

#python #arrays #postgresql #append #bytea

Вопрос:

У меня есть база данных таблиц учетных записей, в которой хранятся имя пользователя, адрес электронной почты, пароль и изображения[]. И что я хочу сделать, чтобы каждый раз, когда они делятся картинкой, байты изображений должны добавляться в тип изображений bytea[]. Я использовал несколько методов, но всегда заканчивался ошибкой. Каково решение?

 
bytea = []

my_cursor = mydb.cursor()

with open(os.path.join('image\Image.png'), 'rb') as file:
    image = file.read()
    #bytea.append(image)

insert_info = f"SELECT array_append(images, {image}) WHERE id = 7"


my_cursor.execute(insert_info)
mydb.commit()
 

Ошибка

 psycopg2.errors.SyntaxError: syntax error at or near "("
LINE 1: SELECT account array_append(images, b'x89PNGrnx1anx00...
 

Комментарии:

1. Вы SELECT инг не INSERT инг или UPDATE инг; Это > > > > > > > > > insert_info = f"SELECT array_append(images, {image}) WHERE id = 7" должно быть это >>>>>> > insert_info = f"UPDATE array_append(images, {image}) WHERE id = 7"

2. Это поражает меня ошибкой psycopg2.errors.SyntaxError: syntax error at or near "("

Ответ №1:

вы должны написать select, а не вставлять :

 bytea = []

my_cursor = mydb.cursor()

with open(os.path.join('image\Image.png'), 'rb') as file:
    image = file.read()
    bytea.append(image)

insert_info = f"insert array_append(images, {image}) WHERE id = 7"


my_cursor.execute(insert_info)
mydb.commit()
 

Комментарии:

1. Я использовал приведенный выше сценарий, но все равно здесь ошибка psycopg2.errors.SyntaxError: syntax error at or near "array_append" LINE 1: INSERT array_append(images, 'b'x89PNGrnx1anx00x00x00...