为什么Python不从函数返回mysqlconnector游标?

2024-05-14 09:23:49 发布

您现在位置:Python中文网/ 问答频道 /正文

当我从函数返回mysql连接器指针时,Python(2.7.3)以某种奇怪的方式违反了它。第一个例子很好。。。

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”作用域中传递的对象…)


Tags: 函数runfromexecutesqlconnectorconnectmysql

热门问题