Python, инкапсуляция класса pymysql в SSCursor не работает должным образом

Следующие работы:

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()

Но когда я заменяю DictCursor на SSCursor, aryRes содержит None, и я получаю:

warnings.warn("Previous unbuffered result was left incomplete")

Я перепробовал все комбинации:

import pymysql
import pymysql.cursors
from pymysql import cursors

Я также подтвердил, что следующее возвращает правильно (не инкапсулировано):

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()

Чего мне не хватает, чтобы заставить работать инкапсулированные SSCursors? Я новичок в Python, поэтому не стесняйтесь исправлять все, что, по вашему мнению, требует внимания.

Забыл упомянуть... Я использую Python 2.7.12

1 ответ

Я думаю, что у вас есть проблема, потому что вы получаете только один результат, в то время как есть другие. После fetchoneпопробуйте запустить fetchall очистить буфер.

Другие вопросы по тегам