我试图在数据库中使用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语句已成功运行,我可以关闭连接?
答案 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()