问题描述
我正在使用MysqL和python创建并填充数据库。我使用MysqL Workbench实时可视化数据库。我的功能之一是向表中添加新行:
def addValue(name,time,active):
print ("Adding a value : " + name + " at " + time + " is active ? " + str(active))
try:
mydb = MysqL.connector.connect(
host="localhost",user="username",password="password",database="alarm"
)
cursor = mydb.cursor()
cursor.execute("INSERT INTO Alarm (Name,Time,Active) VALUES (%s,%s,%s)",(name,active))
print ("1 Alarm added to the Table")
except MysqL.connector.Error as error:
print("Failed to add data to Table Alarm : {}".format(error))
finally:
if (mydb.is_connected()):
cursor.close()
mydb.close()
print("Connection closed\n")
此函数不会输出任何错误,但是新行不会在我的表中显示(即使使用硬编码值而不是变量)。我知道要考虑此查询的原因是,当我使用MysqL Workbench检查表时,并使用相同的查询手动添加一行时,主键会自动增加。
另一方面,当我使用上一个函数添加数据时,允许我显示该表行的函数不起作用,而当使用MysqL Workbench手动添加该行时,该函数就可以正常工作。
解决方法
PEP 249(Python数据库API规范v2.0)指定自动提交必须首先关闭(https://www.python.org/dev/peps/pep-0249/#commit)。
但是您可以通过connect()
方法将其打开。
mydb = mysql.connector.connect(
host="localhost",user="username",password="password",database="alarm",autocommit=True)