#python #postgresql
#python #postgresql
Вопрос:
У меня есть список Python newcol
, который я хочу добавить в существующую таблицу Postgresql. Я использовал следующий код:
conn = psycopg2.connect(host='***', database='***', user='***', password='***')
cur = conn.cursor()
cur.execute('ALTER TABLE %s ADD COLUMN %s text' % ('mytable', 'newcol'))
conn.commit()
Это добавило список newcol
в мою таблицу, однако в новом столбце нет значений. В python, когда я печатаю список на python, это заполненный список.
Кроме того, количество строк в таблице и в списке, которые я хочу добавить, одинаковы. Я немного смущен.
Заранее спасибо за помощь.
Комментарии:
1.
ALTER TABLE ... ADD COLUMN ...
не добавляет значения из списка — он только добавляет / создает (пустой) столбец. Чтобы добавить значения в этот столбец, вам нужноUPDATE
— изучить SQL.2. @furas, woops, немного запутался при переносе его в Python. В SQL я вручную добавлял каждую строку в прошлом. Есть ли способ обновить значения и добавить весь список?
3. Вы можете использовать
for
цикл для получения элемента из списка и выполненияUPDATE
запроса.
Ответ №1:
ALTER TABLE
изменяет только схему таблицы — в вашем случае он создаст новый столбец и инициализирует его пустыми (нулевыми) значениями.
Чтобы добавить список значений в этот столбец, вы можете сделать: UPDATE TABLE <table> SET ...
в цикле.