Ответ 1
использовать
dbb.commit()
после
curb.execute ("UPDATE RadioGroups SET CurrentState=1 WHERE RadioID=11")
выполнить все изменения, которые вы загрузили, в сервер mysql
У меня есть python script, который должен обновить базу данных mysql, я до сих пор:
dbb = MySQLdb.connect(host="localhost",
user="user",
passwd="pass",
db="database")
try:
curb = dbb.cursor()
curb.execute ("UPDATE RadioGroups SET CurrentState=1 WHERE RadioID=11")
print "Row(s) were updated :" + str(curb.rowcount)
curb.close()
except MySQLdb.Error, e:
print "query failed<br/>"
print e
script печатает Row(s) were updated :
с правильным количеством строк, которые имеют RadioID
of 11. Если я изменил RadioID
на другое число, не указанное в таблице, он скажет Row(s) were updated :0
. Однако база данных фактически не обновляется. Поле CurrentState
остается неизменным. Если я скопирую и передаю инструкцию SQL в PHPMyAdmin, она отлично работает.
использовать
dbb.commit()
после
curb.execute ("UPDATE RadioGroups SET CurrentState=1 WHERE RadioID=11")
выполнить все изменения, которые вы загрузили, в сервер mysql
Как указала @Lazykiddy, вы должны зафиксировать свои изменения после загрузки их в mysql.
Вы также можете использовать этот подход, чтобы включить настройку автоматической фиксации сразу после инициализации соединения MySQL:
dbb.autocommit(True)
Затем он автоматически зафиксирует изменения, внесенные вами во время выполнения кода.
два ответа верны. Однако вы также можете это сделать:
dbb = MySQLdb.connect(host="localhost",
user="user",
passwd="pass",
db="database",
autocommit=True)
добавить autocommit = True