在MySQL上执行插入,没有错误但也没有插入

时间:2018-11-26 11:50:39

标签: python mysql

注意:我是Python的新手,所以问题可能出在任何地方。

  • Python:3.6
  • MySQL:8

我有一个MySQL数据库设置,并且可以通过Python从它成功查询,因此我确定我的连接正常。我可以在MySQL Workbench中插入记录,因此我可以肯定数据库是可以的。但是,当我运行以下代码时,我没有收到错误(“ Done”不会打印,“ error”不会打印)。但是,该记录未插入。

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

为此,我遇到了很多错误,但突然,没有错误。但是,肯定有一些错误,对吧?

我在做什么错,这会阻止插入记录而不产生任何类型的错误?

修改 道格拉斯回答后,我更改为打印SQL插入语句,然后将其复制并粘贴到SQL Workbench中。再次,它没有通过python运行它的任何操作,但是在SQL Workbench中运行确实会按预期插入记录。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我没有发现任何明显的建议,尽管有建议。 与执行查询之前创建上述查询的方式相同, 在执行以下操作之前,先进行打印,然后确定 您正在执行什么。作为一般规则,我不构造查询 execute函数中的字符串。我看不到可能会关闭 帮助提交了数据。我希望这会有所帮助。