Python,SSCursor的pymysql类封装不能按预期工作

alf*_*g67 6 python class pymysql

以下作品:

class DB():
    def __init__(self, host, user, password, db):
        self.conn =  pymysql.connect(
            host = host,
            user = user,
            passwd = password,
            charset = 'utf8',
            cursorclass = pymysql.cursors.DictCursor,
            db = db
        )

        self.cur = self.conn.cursor()

    def execute(self, sql):
        self.cur.execute(sql)

    def fetchone(self):
        return self.cur.fetchone()

cf = DB("localhost", "user", "pass", "db")
cf.execute("SELECT Count(*) FROM Table")
aryRes = cf.fetchone()
Run Code Online (Sandbox Code Playgroud)

但是当我用SSCursor替换DictCursor时,aryRes包含None,我得到:

warnings.warn("Previous unbuffered result was left incomplete")
Run Code Online (Sandbox Code Playgroud)

我尝试了以下所有组合:

import pymysql
import pymysql.cursors
from pymysql import cursors
Run Code Online (Sandbox Code Playgroud)

我还确认以下内容正确返回(未封装):

con = pymysql.connect(
    host = "localhost", 
    user = "user",
    passwd = "pass",
    charset = 'utf8',
    cursorclass = pymysql.cursors.SSCursor,
    db = "db"
)
cur = con.cursor()
cur.execute("SELECT Count(*) FROM Table")
aryRes = cur.fetchone()
Run Code Online (Sandbox Code Playgroud)

我错过了哪些会使封装的SSCursors工作?我是Python的新手,所以请随意纠正任何您需要注意的事情.

忘了提......我正在使用Python 2.7.12

Fej*_*ejs 1

我认为你有问题,因为你只获取一个结果,而还有其他结果。之后fetchone,尝试运行fetchall以清除缓冲区。