为什么cursor.execute与pymysql总是得到nonetype错误

时间:2015-08-19 09:36:14

标签: python cursor pymysql

我试图在数据库中使用cursor.execute更新记录,但它总是返回NoneType而不是可迭代的错误,所以我决定用'select curtime()'之类的简单测试,它会给出同样的错误。

cnx=pymysql.connect(user=user,password=pw,
                   host=127.0.0.1,port=3306,db=test,autocommit=True)
cursor=cnx.cursor()
cursor.execute('Select curtime()')

我得到'TypeError:'NoneType'对象不可迭代'

编辑: 我看到你需要完整的追溯是什么意思,我回到家里,问题消失了

File "/opt/anaconda3/lib/python3.4/site-packages/pymysql/cursors.py", line 51, in close
while self.nextset():

我从其他文章中发现了这个错误因为我之前的真正的sql语句字符串 cursor.execute(longsqlstatement)非常长,当我尝试关闭连接和游标时,它会导致错误。并且在我的curtime()测试中,因为我的早期游标尚未完成执行,因此也会导致NoneType错误。所以我的问题是我如何知道所有的sql语句已成功运行,我可以关闭连接?

1 个答案:

答案 0 :(得分:0)

无法找到答案,所以决定打破长多字符串         successitem = 0     faileditem = 0

cursor = cnx.cursor()
executeitems=statement.split(';')
for item in executeitems:
    item=item.strip()
    if item!='':
        try:
            cursor.execute(item)
            result=cursor.rowcount
            if result>-1:
                #print('Successful:',item)
                successitem=successitem+1
        except:
            faileditem=faileditem+1
            print('--FAIL TO UPDATE:', item)

cnx.commit()
print('successfully commited items:',successitem)
print('failed items:',faileditem)

cnx.close()