Не могу выполнить инструкцию INSERT в скрипте Python через MySQLdb - PullRequest
4 голосов
/ 09 мая 2011

Я пытаюсь выполнить базовый оператор INSERT для таблицы MySQL из скрипта Python, используя MySQLdb. Мой стол выглядит так:

CREATE TABLE `testtable` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `testfield` varchar(255) NOT NULL,
    PRIMARY KEY (`id`)
)

Выполнение этого запроса из командной строки MySQL работает нормально:

INSERT INTO `testtable` (`id`, `testfield`) VALUES (NULL, 'testvalue');

Но когда я пытаюсь выполнить запрос из скрипта Python, строки не вставляются. Вот мой код:

conn = MySQLdb.connect(host=db_host, port=db_port, user=db_user, passwd=db_password, db=db_database)
cursor = conn.cursor ()
cursor.execute ("INSERT INTO `testtable` (`id`, `testfield`) VALUES (NULL, 'testvalue')")
print "Number of rows inserted: %d" % cursor.rowcount
cursor.close()
conn.close()

Как ни странно, будет напечатано «Количество вставленных строк: 1.» Я также могу подтвердить, что этот запрос увеличивает поле идентификатора, потому что, когда я добавляю еще одну строку через командную строку, значение ее идентификатора остается таким же, как если бы скрипт Python успешно вставил свои строки. Однако выполнение запроса SELECT не возвращает ни одной строки из сценария.

Есть идеи, что не так?

Ответы [ 2 ]

11 голосов
/ 09 мая 2011

Вам либо нужно установить conn.autocommit(), либо вам нужно сделать conn.commit() - см. FAQ

5 голосов
/ 09 мая 2011

вам необходимо совершить:

conn.commit()

http://mysql-python.sourceforge.net/FAQ.html#my-data-disappeared-or-won-t-go-away

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...