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
.