MySQLdb и большие запросы с использованием CursorUseResultMixIn
Как я могу использовать CursorUseResultMixIn в MySQLdb. Очевидная вещь, которую нужно было сделать, была:
con=MySQLdb.connect(host='localhost', user='test', passwd='xx', db='yy')
curs = con.cursor(MySQLdb.cursors.CursorUseResultMixIn)
Но это дает мне такую ошибку:
File "C:Python26libsite-packagesMySQLdbconnections.py", line 226, in cursor
return (cursorclass or self.cursorclass)(self)
TypeError: object.__new__() takes no parameters
Что я делаю не так?
1 ответ:
Модуль
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)ПС. Существует также
cursors.SSDictCursor, который возвращает строки в виде словарей, сохраняя результирующий набор на сервере.PPS. В Ubuntu 11.10 модуль
MySQLdb.cursorsобычно расположен в/usr/lib/pymodules/python2.7/MySQLdb/cursors.py.