Я пытаюсь вставить некоторые значения в таблицу postgres в сценарии python, используя pgdb.
Сначала я попробовал это:
cursor.execute('INSERT INTO sites (url) VALUES (%s)', (i,))
Это не сработало, поэтому я изменил его на
print 'INSERT INTO sites (url) VALUES (\'%s\')' %(i)
cursor.execute('INSERT INTO sites (url) VALUES (\'%s\')' %(i))
Вывод из оператора печати INSERT INTO sites (url) VALUES ('72.240.34.19:80')
Если я вставляю вышеприведенный вывод в psql, он работает (т.е. строка вставлена). Ошибки не генерируются в скрипте, но строки не вставлены. У пользователя есть все привилегии, и курсор активен (я могу выполнять выбор и т.д.).
Поскольку это первый раз, когда я использую postgres, я подозреваю, что у меня может быть что-то очевидное. Я просмотрел все примеры, которые мог найти, но не смог обнаружить, что не так с моим кодом.
Изменение: я добавил эту строку в код: print 'Rowcount %s' %(cursor.rowcount)
Это выводит Rowcount 1
но SELECT * FROM sites
пуст
Второе редактирование: Это странно. Я вручную вставил строку в таблицу. Это автоматически сгенерированный идентификатор, который имеет тип serial, равнялся 10. Я запускал сценарий 3 раза, так как ранее не были вставлены строки. Теперь, когда я вставил строку вручную, идентификатор стал 14. Похоже, что строки вставлены и затем удаляются, когда программа завершает выполнение. У меня кончились идеи по этому поводу.
Обратите внимание на ques//что-то, что я должен написать, потому что стек требует 30 символов //
conn.commit
после внесения изменений.