Por que meu MySQLdb não funciona? (Python) [fechado]

0

Eu quero executar uma consulta do banco de dados do 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"

Essa é minha consulta para inserir um valor no meu banco de dados. Quando executei, dizia pronto e nada de errado. Mas, quando olho para os dados, nada aparece. Minha mesa está vazia.

Mas quando você usa o módulo _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"

Também foi dito que está tudo bem, nada de errado, e quando eu olho os dados, há um registro que foi importado.

Na verdade, eu gostaria de usar o módulo MySQLdb em vez do _mysql para executar este código:

("""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"))

Mas não sei por que isso não funciona. Existe alguém sabe como fazer isso funciona para que eu possa usar o módulo MySQLdb?

    
por Barata 25.09.2015 / 16:16

1 resposta

3

O Mysql DB suporta transações. De acordo com o PEP-249:

"se o banco de dados suportar um recurso de confirmação automática, isso deve ser inicialmente desativado" e "fechar uma conexão sem confirmar as alterações primeiro fará com que uma reversão implícita seja executada".

Você pode

chame mydb.commit() para confirmar suas alterações no banco de dados

ou

(nephente) defina autocommit usando mydb.autocommit(True)

    
por user448115 26.09.2015 / 11:36