MySQLdb и большие запросы с использованием CursorUseResultMixIn - PullRequest
2 голосов
/ 22 февраля 2012

Как я могу использовать CursorUseResultMixIn в MySQLdb . Очевидная вещь, которую нужно было сделать:

con=MySQLdb.connect(host='localhost', user='test', passwd='xx', db='yy')
curs = con.cursor(MySQLdb.cursors.CursorUseResultMixIn)

но это дает мне эту ошибку:

  File "C:\Python26\lib\site-packages\MySQLdb\connections.py", line 226, in cursor
    return (cursorclass or self.cursorclass)(self)
TypeError: object.__new__() takes no parameters

Что я делаю не так?

Связанные сведения здесь и здесь

1 Ответ

3 голосов
/ 22 февраля 2012

Модуль MySQLdb.cursors использует CursorUseResultMixIn следующим образом:

class SSCursor(CursorUseResultMixIn, CursorTupleRowsMixIn,
               BaseCursor):

    """This is a Cursor class that returns rows as tuples and stores
    the result set in the server."""

Это буквально полное определение SSCursor.

Если у вас нет особой необходимости подклассировать BaseCursor по-другому, вы можете просто использовать SSCursor следующим образом:

import MySQLdb.cursors as cursors
con = MySQLdb.connect(host = 'localhost', user = 'test', passwd = 'xx', 
                           db = 'yy', cursorclass = cursors.SSCursor)

PS.Существует также cursors.SSDictCursor, который возвращает строки в виде словарей, сохраняя набор результатов на сервере.

PPS.В Ubuntu 11.10 модуль MySQLdb.cursors обычно находится по адресу /usr/lib/pymodules/python2.7/MySQLdb/cursors.py.

...