Невозможно вставить данные для вставки данных в таблицу postgres с помощью pgdb

1

Я пытаюсь вставить некоторые значения в таблицу 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. Похоже, что строки вставлены и затем удаляются, когда программа завершает выполнение. У меня кончились идеи по этому поводу.

  • 1
    Обнаружил, что это действительно то, что я пропустил. Мне нужно было выполнить коммит. т.е. conn.commit после внесения изменений.
Теги:

1 ответ

0
Лучший ответ

Обратите внимание на ques//что-то, что я должен написать, потому что стек требует 30 символов //

Ещё вопросы

Сообщество Overcoder
Наверх
Меню