我有以下代碼與子查詢的錯誤沒有子查詢結果的Python mysql的更新
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()
在那裏我有我想更新和文字是一個長文本可以包含來自UTF8表中的任何條目列表。
當我運行代碼,我注意到兩兩件事:
- 它運行了一段時間,但沒有得到更新。
在某些時候,它與錯誤崩潰:
_mysql_exceptions.OperationalError: (1242, 'Subquery returns more than 1 row')
這個我不能得到它的抓地力和更我相信,只有一行被更新每個表定義的主因爲如鍵被定義爲(ENTITY_ID,REVISION_ID,δ,刪除,的langCode)
注意:此行爲是重複pymysql和與MySQL客戶端上python3.6
問候, T
您是否嘗試過使用mysql命令行或其他一些GUI客戶端手動執行更新查詢? –
我不能,因爲文本變量包含整個網頁的源代碼。不過,我從表中選擇了where子句,併爲每個查詢返回了1行。這意味着問題是在文本變量的某處....但是我不確定什麼 –
如果文本變量包含單引號或雙引號,查詢將無法執行。由於文本是HTML,所以在存入數據庫列之前,需要對其進行編碼。 –