使用Python删除SQL Server指定日期及之后行报错如何解决
问题原因与修复方案
错误原因
你直接将Python变量名min_date写在了SQL查询字符串中,数据库的SQL解析引擎无法识别Python侧的变量,只会把min_date当做FMK表的字段名处理,因此抛出了「无效列名」的报错。
修复方法
使用pyodbc的参数化查询传递变量值,不要直接把变量拼接到SQL字符串里:
- SQL语句中用
?作为参数占位符,代替变量的位置 - 调用
execute()方法时,第二个参数传入包含变量值的元组
修正后的代码片段
# 注意单个参数的元组末尾必须加逗号,否则会被识别为普通值而非元组,触发参数不匹配报错 cur.execute('DELETE FROM FMK WHERE To_Date >= ?', (min_date,))
新手操作提示
删除数据是不可逆操作,建议正式执行删除前先查询匹配的行数,确认数据范围正确后再执行删除,避免误删:
# 先统计待删除的行数,验证筛选条件是否正确 cur.execute('SELECT COUNT(*) FROM FMK WHERE To_Date >= ?', (min_date,)) del_count = cur.fetchone()[0] print(f"待删除的行数为:{del_count},确认范围无误后再执行删除操作")
内容的提问来源于stack exchange,提问作者HPython_noob
相关产品推荐
相关产品推荐

