python数据库游标返回函数_为什么Python不会从函数返回我的mysql-connector游标?

当我从函数返回时,Python(2.7.3)以某种奇怪的方式违反了我的mysql-connector游标.这第一个例子工作得很好……

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”范围的对象…)

解决方法:

我没有立即可用的MySQL,但正如Preet Sangha所提到的,当你连接到函数内部的数据库并返回游标时,你的cnx变量在函数退出时超出了范围,所以数据库连接关闭,你的光标引用了关闭数据库连接.

在您的顶级代码示例中并非如此,这可能解释了它的工作原理以及最底层示例的原因.

标签:python,python-2-7,mysql-connector

来源: https://codeday.me/bug/20190625/1284390.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值