Я хочу выполнить запрос к базе данных из python:
import MySQLdb
mydb = MySQLdb.connect(host='127.0.0.1', user='root', passwd='', db='macadd', port=3306)
c = mydb.cursor()
c.execute("""INSERT INTO macadd.scanned (mac, first_time_seen, last_time_seen) VALUES (%s, %s, %s)""", ("0A:1B:2C:3D:4E:5F", "2015-09-20 19:00:18", "2015-09-20 19:03:57"))
mydb.close()
print "Done"
Это мой запрос для ввода значения в мою базу данных. Когда я выполнил, он сказал, что сделано и ничего плохого. Но когда я смотрю на данные, ничего не появляется. Моя таблица пуста.
Но когда U использует модуль _mysql
:
import _mysql
mydb = _mysql.connect(host='127.0.0.1', user='root', passwd='', db='macadd', port=3306)
mydb.query("INSERT INTO macadd.scanned (mac, first_time_seen, last_time_seen) VALUES ('0A:1B:2C:3D:4E:5F', '2015-09-09 00:00:00', '2015-09-02 00:00:00')")
print "done"
Он также сказал, что сделано, ничего плохого, и когда я смотрю на данные, есть одна запись, которая была импортирована.
На самом деле я хотел бы использовать Модуль MySQLdb вместо модуля _mysql для выполнения этого кода:
("""INSERT INTO macadd.scanned (mac, first_time_seen, last_time_seen) VALUES (%s, %s, %s)""", ("0A:1B:2C:3D:4E:5F", "2015-09-20 19:00:18", "2015-09-20 19:03:57"))
Но я не знаю, почему он не работает. Кто-нибудь знает, как заставить это работать, чтобы я мог использовать модуль MySQLdb?
Транзакция поддержки БД Mysql. Согласно PEP-249:
"если поддержка БД функция автоматической фиксации, это должно быть первоначально прочь", и "закрытие соединения, не фиксируя изменений сначала заставит неявный откат быть выполненным".
Вы можете
звонить mydb.commit()
передавать Ваши изменения в дб
или
(nephente) использование автоматической фиксации набора mydb.autocommit(True)