Почему функция 'insert' не добавляет строки с использованием MySQLdb? - PullRequest
7 голосов
/ 07 февраля 2012

Я пытаюсь понять, как использовать библиотеку MySQLdb в Python (я новичок в лучшем случае для них обоих).

Я следую за кодом здесь , а именно:

cursor = conn.cursor ()
cursor.execute ("DROP TABLE IF EXISTS animal")
cursor.execute ("""
   CREATE TABLE animal
   (
     name     CHAR(40),
     category CHAR(40)
   )
 """)
cursor.execute ("""
   INSERT INTO animal (name, category)
   VALUES
     ('snake', 'reptile'),
     ('frog', 'amphibian'),
     ('tuna', 'fish'),
     ('racoon', 'mammal')
 """)
print "Number of rows inserted: %d" % cursor.rowcount
cursor.close ()
conn.close ()

Я могу изменить этот код для создания или удаления таблиц, но я не могу заставить его на самом деле зафиксировать INSERT. Он возвращает значение row.count, как и ожидалось (даже когда я изменяю значение в таблице, оно изменяется на то, что я ожидаю).

Каждый раз, когда я просматриваю базу данных с помощью PHPMyAdmin, никаких вставок не производится. Как передать INSERT в базу данных?

1 Ответ

16 голосов
/ 07 февраля 2012

Вы забыли commit изменения данных, по умолчанию отключена автоматическая фиксация:

   cursor.close ()
   conn.commit ()
   conn.close ()

Цитирование Написание сценариев MySQL с Python DB-API Документация:

"Метод commit () объекта соединения фиксирует любые незавершенные изменения в текущей транзакции, чтобы сделать их постоянными в базе данных. В DB-API соединения начинаются с отключенного режима автоматической фиксации, поэтому перед отключением необходимо вызвать commit (), или изменения могутбыть потерянным. "

...