使用Python+MySQL实现CRUD时出现Cursor is not connected错误求助
问题分析与解决
错误原因
你犯了一个顺序逻辑错误:提前关闭了数据库连接和游标。
创建完cursor和conexao后,你立刻执行了cursor.close()和conexao.close(),此时数据库连接已经断开,游标也已失效。后续再调用cursor.execute()和conexao.commit()时,自然会触发“Cursor is not connected”错误。
修正后的代码
把CRUD操作放在关闭连接和游标之前,同时建议使用参数化查询避免SQL注入风险:
import mysql.connector # 建立数据库连接 conexao = mysql.connector.connect( host='localhost', user='root', password='', database='bdyoutube', ) cursor = conexao.cursor() # 执行INSERT操作(参数化查询写法) nome_produto = "todynho" valor = 3 # 用%s作为占位符,参数放在execute的第二个参数里(元组形式) comando = 'INSERT INTO vendas (nome_produto, valor) VALUES (%s, %s)' cursor.execute(comando, (nome_produto, valor)) conexao.commit() # 所有操作完成后,再关闭游标和连接 cursor.close() conexao.close()
关键注意点
- 数据库操作必须在连接和游标处于活跃状态时执行,操作全部完成后再关闭资源。
- 不要用f字符串直接拼接SQL语句,这种写法存在SQL注入漏洞,参数化查询是更安全的标准做法。
内容的提问来源于stack exchange,提问作者Douglas Tirloni
相关产品推荐
相关产品推荐

