Передача списка списков и значений в запросе postgresql

#python #postgresql

#python #postgresql

Вопрос:

db = postgresql 13

язык = python

у меня есть имя таблицы = «abc»

 coulmn_name=[question_1,question_2,question_3,.....,question_50]
column_values=[1,2,3,......,50]
 

Мне нужно написать запрос postgresql для сохранения этих значений в соответствующих именах столбцов в основном мне нужно использовать параметры списка в моем запросе. я подключился к базе данных с помощью pyscopg2, и я также могу выполнять запросы. но вручную писать имена столбцов:

 cursor.execute('INSERT INTO user_responses("question_1","question_2","question_3","question_4","question_5","question_6","question_7","question_8","question_9","question_10","question_11","question_12","question_13","question_14","question_15","question_16","question_17","question_18","question_19","question_20","question_21","question_22","question_23","question_24","question_25","question_26","question_27","question_28","question_29","question_30","question_31","question_32","question_33","question_34","question_35","question_36","question_37","question_38","question_39","question_40","question_41","question_42","question_43","question_44","question_45","question_46","question_47","question_48","question_49","question_50") VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)',column_values)
 

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

        sql_string='INSERT INTO {} '.format(column_name)  
 

как я могу действовать дальше?пожалуйста, помогите.

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

1. psycopg2 это библиотека, которую вы должны использовать для чтения и записи в базу данных Postgres. Прочитайте документы, чтобы начать — psycopg.org/docs/usage.html .

Ответ №1:

Этого INSERT INTO ({}) не должно быть INSERT INTO {} . Имена столбцов должны быть внутри круглых фигурных скобок.

 columns = ["question_1", "question_2", "question_3"]

sql_string = """INSERT INTO user_responses({}) VALUES (%s,%s,%s)""".format(','.join(columns))
 

Ответ №2:

«Один простой способ — преобразовать ваши значения в кортеж для строки использования столбца»

имя_потока=’,’.join([q1,q2, q3, …..,q50])

column_values= кортеж([1,2,3,……,50])

Предполагая, что приведенный выше список индексов и значений находится в правильной последовательности

sql_string=»ВСТАВИТЬ В TABLE_XYZ ({}) ЗНАЧЕНИЯ {};».формат (имя_столбца, имя_столбца)

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

1. синтаксическая ошибка в СТРОКЕ 1 «вопрос» или рядом с ней: ВСТАВИТЬ В user_responses (‘question_1’, ‘..

2. Я написал так: column_name = [«q1», «q2″,»q3»] потому что column_name=[q1, q2, q3] выдает мне ошибку undefined ошибка q1, q2

3. @AlokSharma да, для столбца вам нужно отформатировать строку по-другому, проверьте обновленный ответ