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

mysql.connector 8.0.30创建buffered+prepared游标报错求助

解决mysql.connector中buffered与prepared游标冲突的问题

在mysql.connector 8.0.30版本中,buffered和prepared是两种互斥的游标类型,无法同时启用,这就是触发ValueError: Cursor not available with given criteria: buffered, prepared的原因。

以下是两种替代方案,根据实际需求选择:

方案1:用prepared游标+手动缓冲结果

如果核心需求是使用服务器端预编译语句,同时需要缓冲结果,可以手动将查询结果存入列表实现缓冲效果:

conn = mysql.connector.connect(...)
# 仅启用prepared游标
cur = conn.cursor(prepared=True)
cur.execute(stmt, (self.email, self.password,))
# 手动缓冲结果到列表
results = list(cur)
uid = results[0] if results else None

方案2:用buffered游标+参数化查询

如果主要需要客户端缓冲结果集,同时想实现安全的参数化查询,无需启用prepared游标——mysql.connector的普通buffered游标本身支持参数化执行:

conn = mysql.connector.connect(...)
cur = conn.cursor(buffered=True)
# 使用%s作为占位符,自动处理参数化
cur.execute(stmt, (self.email, self.password,))
uid = cur.fetchone()

补充说明

mysql.connector的prepared游标基于服务器端预编译实现,buffered游标则是在客户端内存中缓存整个结果集,两者实现逻辑不兼容,因此无法同时启用。根据业务优先级选择核心特性,再通过上述方式补全另一个需求即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:54:24