Почему Python не возвращает мой курсор-соединитель mysql из функции?

Python (2.7.3) каким-то странным образом нарушает мой курсор в MySQL-коннекторе, когда я возвращаю его из функции. Этот первый пример работает нормально ...

cnx = connect()
sql = "SELECT * FROM MyTable"
cursor = cnx.cursor()
cursor.execute(sql)
row = cursor.fetchone()

Однако, если я верну курсор и попытаюсь извлечь fetchone () (или fetchall ()) извне, он выдаст исключение ...

def run_query():
    cnx = connect()
    sql = "SELECT * FROM MyTable"
    cursor = cnx.cursor()
    cursor.execute(sql)
    return cursor

mycursor = run_query()
row = mycursor.fetchone()

Это бросает ...

File "/usr/lib/pymodules/python2.7/mysql/connector/cursor.py", line 533, in fetchone
  row = self._fetch_row()
File "/usr/lib/pymodules/python2.7/mysql/connector/cursor.py", line 508, in _fetch_row
  (row, eof) = self.db().protocol.get_row()
AttributeError: 'NoneType' object has no attribute 'protocol'

Это несмотря на то, что «print type (mycursor)» будет печатать «mysql.connector.cursor.MySQLCursor»

Какой тип нечестивого приставания выполняет Python над объектами, возвращаемыми из функций? (Имейте в виду, что это будет делать это для пройденных курсоровв модуль ... так что это не похоже на объект, переданный из области видимости "import mysql.connector" ...)

Ответы на вопрос(2)

Ваш ответ на вопрос