Подтвердить что ты не робот

Вставить Pymysql в нерабочее время

Я запускаю это из PyDev в Eclipse...

import pymysql
conn = pymysql.connect(host='localhost', port=3306, user='userid', passwd='password', db='fan')
cur = conn.cursor()
print "writing to db"
cur.execute("INSERT INTO cbs_transactions(leagueID) VALUES ('test val')")
print "wrote to db"

В результате в верхней части консоли отображается C:... test.py и в консоли:

запись в db написал db

Поэтому он не заканчивается до выполнения команды execute. Но когда я смотрю в таблицу в MySQL, он пуст. Запись не вставлена.

Прежде всего, почему он не пишет запись. Во-вторых, как я могу увидеть журнал или ошибку, чтобы узнать, что произошло. Обычно, если код не работает, должна произойти некоторая ошибка.

4b9b3361

Ответ 1

Ты это сделал? conn.commit()

Ответ 2

PyMySQL отключает autocommit по умолчанию, вы можете добавить autocommit=True для connect():

conn = pymysql.connect(
    host='localhost',
    user='user',
    passwd='passwd',
    db='db',
    autocommit=True
)

или вызовите conn.commit() после вставки

Ответ 3

Вы можете сделать

  • conn.commit() перед вызовом close

или же

  • включите автокоммит через conn.autocommit(True) сразу после создания объекта подключения.

Оба варианта были предложены разными людьми при дублировании вопроса, который можно найти здесь: База данных не обновляется автоматически с MySQL и Python