首页 > 解决方案 > Python MySQL准备好的字典语句抛出错误

问题描述

我正在尝试将准备好的语句的结果直接提取到字典中,但出现错误:

ValueError: Cursor not available with given criteria: buffered, dictionary, prepared

我读到这是由于默认情况下没有缓冲光标,但我启用了缓冲,结果没有变化。

完整代码如下。

import mysql.connector

def __init__(self):
    self.mydb= mysql.connector.connect(
        host="host",
        user="user",
        passwd="password",
        database="db",
        buffered=True
    )
    self.cur = self.mydb.cursor(prepared=True, dictionary=True)
    self.fetch_permit = """SELECT PERMIT_ID,BUILDER_BUSINESS_NAME, BUILDER_ZIP_CODE, BUILDER_PHONE_NUMBER
     FROM MASTER_TABLE WHERE permit_id = %s """

def getPermits(self,permit_id):
    permits = self.cur.executemany(self.fetch_permit, permit_id)
    return permits

info.getPermits(permit_id='1000') # throws error

标签: pythonmysql

解决方案


可能不是最好的解决方案,但我能够通过更改我正在使用的 mySQL 库来解决这个问题:

import pymysql

然后我改变了光标:

self.mydb.cursor(pymysql.cursors.DictCursor)

现在按预期工作。


推荐阅读