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

使用pyodbc执行SQL插入时遇参数标记不匹配错误求助

解决pyodbc插入数据的参数标记错误

错误原因很明确:pyodbc不支持用%s作为SQL参数占位符,它使用?作为标准占位符。你写的SQL语句里用了%s,pyodbc无法识别这是参数标记,所以判定SQL里没有需要匹配的参数,但你传入了2个参数,就触发了('The SQL contains 0 parameter markers, but 2 parameters were supplied', 'HY000')错误。

给你修正后的代码,同时补充几个新手容易忽略的细节:

  • 把SQL中的%s替换为?
  • 将输入的体重转换为数值类型(数据库体重字段大概率是数值型,直接传字符串会报错)
  • 执行插入后必须提交事务,否则数据不会真正写入数据库
  • 用完游标记得关闭(好习惯)
from datetime import datetime
import pyodbc

# 确保conn是已经正确建立的数据库连接
def insertweight():
    cursor = conn.cursor()
    weight_input = input("今天的体重是多少?: ")
    # 处理输入转换,避免非数值输入报错
    try:
        weight = float(weight_input)
    except ValueError:
        print("请输入有效的数字格式体重")
        return
    # 生成当前时间戳
    timestamp = datetime.now().timestamp()
    # 使用?作为参数占位符
    cursor.execute("INSERT INTO weightdata VALUES (?, ?)", timestamp, weight)
    # 提交事务,这步很关键
    conn.commit()
    cursor.close()
    print("体重数据已成功插入")

insertweight()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 19:06:20