#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 да, для столбца вам нужно отформатировать строку по-другому, проверьте обновленный ответ