我在raspberry pi上运行python/mysqldb时遇到了一些麻烦。这是一个相当简单的脚本,所以我不知道我错过了什么。“选择*来自.”运行时没有问题,但我似乎无法用新值更新表。脚本运行时没有抛出错误,但是当我使用ctrl时,它会给出如下内容:
异常_mysql_exceptions.ProgrammingError:(2014年,“命令不同步;现在不能运行此命令”)在绑定方法DictCursor.__del of MySQLdb.cursors.DictCursor object 0x19dfd90中
这是我的剧本:
dhost = "localhost"
duser = "root"
dname = "rpi"
dpass = "datPassword"
import MySQLdb
try:
con = MySQLdb.connect(dhost,duser,dpass,dname);
cur = con.cursor(MySQLdb.cursors.DictCursor)
except MySQLdb.Error, e:
print "Error %d: %s" % (e.args[0],e.args[1])
sys.exit(1)
def websiteToSensor():
cur.execute("SELECT * FROM homeauto WHERE changedby = 'website'")
rows = cur.fetchall()
for row in rows:
cur.execute("UPDATE homeauto SET changedby = 'script' WHERE id = '%s'",(row["id"]))
return
while True:
websiteToSensor()有人知道为什么我的表没有更新吗?谢谢!
SOLUTION__***编辑:*编辑
感谢Martijn,下面是我的新websiteToSensor()代码:
def websiteToSensor():
cur = con.cursor(MySQLdb.cursors.DictCursor)
cur.execute("SELECT * FROM homeauto WHERE changedby = 'website'")
rows = cur.fetchall()
num = int(cur.rowcount)
if num > 0:
for row in rows:
cur.execute("UPDATE homeauto SET changedby = 'script' WHERE id = '%s'",(row["id"]))
con.commit()
cur.close()
con.commit()
else:
cur.close()
con.commit()
return发布于 2012-09-22 21:38:29
尝试提交您的更改:
def websiteToSensor():
cur.execute("SELECT * FROM homeauto WHERE changedby = 'website'")
rows = cur.fetchall()
for row in rows:
cur.execute("UPDATE homeauto SET changedby = 'script' WHERE id = '%s'",(row["id"]))
con.commit()
returnhttps://stackoverflow.com/questions/12547855
复制相似问题