我有以下代码
conn = MySQLdb.connect(server, user, password, database, autocommit=True, charset='utf8')
for e in list_to_updpate:
nid = e[0]
vid = e[1]
text = e[2]
delta = e[3]
deleted = e[4]
langcode = e[5]
to_update = e[6]
if (to_update == 1):
with conn.cursor() as cursor:
cursor.execute("""update node__body set body_value=%s
where entity_id=%s AND revision_id=%s AND
delta=%s AND deleted=%s AND langcode=%s;""" ,
(MySQLdb.escape_string(text) , int(nid),
int(vid), int(delta), int(deleted), langcode, ))
conn.commit()
conn.close()
我有要更新的条目列表,文本是一个 LONG TEXT,它可以包含 UTF8 表中的任何内容。
当我运行代码时,我注意到两件事:
- 它运行了一段时间,但没有任何更新。
在某些时候它会因错误而崩溃:
_mysql_exceptions.OperationalError: (1242, 'Subquery returns more than 1 row')
这我无法掌握它,而且我确信只有一行得到更新,因为根据表定义,主键被定义为(entity_id,revision_id,delta,deleted,langcode)
注意:此行为在 pymysql 和 python3.6 上的 MySQL-client 中重复
问候,T