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
очистить буфер.