Вставки не появляются - PullRequest
1 голос
/ 21 мая 2011

Я использую gevent с gevent-mysql (я также использовал pymysql для того же эффекта).Он выбирает просто отлично, но независимо от того, что я делаю, я не могу заставить его выполнить вставку.У меня нет идей.

conn = geventmysql.connect(host='localhost', port=3306, user='root', db='content')
cur = conn.cursor()
cur.execute("insert into placement (placement_name, some_id) values ('static', 1)")
cur.close()
conn.close()

Ответы [ 3 ]

3 голосов
/ 21 мая 2011

Если вы используете механизм хранения транзакций (например, InnoDB), вы должны проверить значение переменной autocommit: http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_autocommit

Если это 0, вам нужно зафиксировать ваши транзакциилибо с использованием встроенного метода commit(), либо с помощью вызова execute("COMMIT").

2 голосов
/ 21 мая 2011

Если geventmysql работает как остальные API-интерфейсы Python DB, вам нужно вызвать commit для того, чтобы зафиксировать любые изменения в базе данных. Если только geventmysql

1 голос
/ 21 мая 2011

В Python DB API все неявно является транзакцией. Если вы закрываете соединение без фиксации, оно откатывается. Сделайте это:

conn.commit()
cur.close()
conn.close()
...