为什么MySQL查询INSERT INTO不会与SELECT一起显示

问题描述

我正在使用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)