注意:我是Python的新手,所以问题可能出在任何地方。
我有一个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中运行确实会按预期插入记录。
答案 0 :(得分:1)
我想你应该关闭光标。和您的连接是自动提交的? 请检查它,然后提交!
答案 1 :(得分:0)
我没有发现任何明显的建议,尽管有建议。 与执行查询之前创建上述查询的方式相同, 在执行以下操作之前,先进行打印,然后确定 您正在执行什么。作为一般规则,我不构造查询 execute函数中的字符串。我看不到可能会关闭 帮助提交了数据。我希望这会有所帮助。