You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python3.11、pypyodbc与tkinter无法删除/编辑SQL数据库行求助

问题原因与修复方案

这不是tkinter和pypyodbc的兼容问题,是代码里的几个细节错误导致的:

  • 参数传递格式错误:pypyodbc的execute方法要求查询参数必须是列表、元组或行对象,你直接传单个变量boxRow不符合要求,所以抛出TypeError。
  • commit调用错误:cursor.commit只是引用方法,没有执行,必须加括号cursor.commit()才会提交事务。
  • SQL字段名写错:你的delete语句里用了boxSelectionRow作为查询条件字段,但实际查询的字段是boxRow,字段名不匹配会导致删除逻辑失效。

修正后的删除代码

boxRow = boxSelectionRow[0][5]
conn = pypyodbc.connect(connection_string)
cursor = conn.cursor()
# 修正字段名,将参数包装成元组(注意逗号不能少,否则会被当成单个变量)
cursor.execute('''delete from boxinventory where boxRow = ?''', (boxRow,))
# 执行commit提交事务
cursor.commit()
# 记得关闭数据库连接
conn.close()

额外优化建议

  • 数据库连接可以复用,不用每次操作都重新创建连接,减少资源消耗。
  • 操作数据库时建议用with语句自动管理连接和游标,避免遗漏关闭操作:
boxRow = boxSelectionRow[0][5]
with pypyodbc.connect(connection_string) as conn:
    with conn.cursor() as cursor:
        cursor.execute('''delete from boxinventory where boxRow = ?''', (boxRow,))
        conn.commit()  # 用with时也可以直接调用conn.commit()

内容的提问来源于stack exchange,提问作者Jim Mehus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 16:35:18