2012-02-22 4 views
2

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

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 

Что я делаю неправильно?

Related info here и here

ответ

3

Модуль 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.

+0

Это работает, запутывая, как они это сделали! –

Смежные вопросы