Python 在MySQL上执行insert,没有错误,但也没有insert

Python 在MySQL上执行insert,没有错误,但也没有insert,python,mysql,Python,Mysql,注意:我是Python新手,所以问题可能是任何东西 Python:3.6 MySQL:8 我有一个MySQL数据库设置,可以通过Python成功地从中查询,所以我确信我的连接是正常的。我可以在MySQL Workbench中插入记录,所以我相当确定DB是正常的。但是,当我运行下面的代码时,我没有得到任何错误完成并打印,错误不打印。但是,没有插入该记录 import mysql.connector cnx = mysql.connector.connect(user='furby', p

注意:我是Python新手,所以问题可能是任何东西

Python:3.6 MySQL:8 我有一个MySQL数据库设置,可以通过Python成功地从中查询,所以我确信我的连接是正常的。我可以在MySQL Workbench中插入记录,所以我相当确定DB是正常的。但是,当我运行下面的代码时,我没有得到任何错误完成并打印,错误不打印。但是,没有插入该记录

import mysql.connector

cnx = mysql.connector.connect(user='furby',
    password='something',host='127.0.0.1', database='mydb')
    cursor = cnx.cursor()

document_root = ET.fromstring(semester.read('data'))
semester_name = document_root.get("Name")
print(semester_name)
query = ("SELECT semester_id 
    FROM StudentData.semesters 
    WHERE name = '%s'")
cursor.execute(query % semester_name)
cursor.fetchall()
print(cursor.rowcount)
if (cursor.rowcount == 0):
    print("hi")
    start_date = document_root.get("StartDate")
    end_date = document_root.get("EndDate")
    notes = document_root.get("Notes")
    try:
        query = "INSERT INTO StudentData.semesters 
            (name, start_date, end_date, notes) VALUES 
            ('" + semester_name + "', '" + start_date + "', 
            '" + end_date + "', '" + notes + "')"
        print(query)
        cursor.execute(query)
    except:
        print("error")

    print("done")
在这方面我犯了很多错误,但突然之间,没有错误。但是,一定有一些错误,对吗

我在这里做错了什么,可以阻止插入记录而不会产生任何错误

编辑
在Douglas回答之后,我改为打印SQL insert语句,然后将其复制并粘贴到SQL Workbench中。同样,它不会通过python运行它,但在SQL Workbench中运行会按预期插入记录。

我想您应该关闭光标。您的连接是自动提交的吗?
请检查它,你应该提交它

我没有看到任何明显的东西,尽管我有一个建议。 与执行查询之前创建查询的方式相同, 执行以下操作并在执行前打印,以便您可以确定 你在执行什么。一般来说,我不构造查询 execute函数中的字符串。我看不到一个可能
帮助提交数据。我希望这有帮助。

谢谢你的回答。我确实按照您的建议进行了更改,但这无助于查看问题中的编辑谢谢Laszlo,但如果我关闭光标,则无法对其执行。如果我关闭并重新打开,我仍然会得到相同的结果,没有错误,但没有记录被插入Dok和事务?你承诺了吗?就是这样!我没有意识到这个细节,但它现在工作得很好。太棒了!好天气