2016-06-12 35 views
0

我正在嘗試這段代碼,並一直給我錯誤。 我想第三個cicle添加角色在表中的名稱相同的行中,所以我想使用WHERE找到名稱,但在SQL代碼中的東西是錯誤的,我找不到什麼。如何在python(MySQLdb導入)中正確使用INSERT數據?

for member in soup.findAll("div", {"class": "member-info"}): 
 
    for membername in member.findAll("div", {"class": "member-name"}): 
 
     print(membername.text) 
 
     mn=membername.text 
 
     cur.execute("""INSERT INTO team (name) 
 
     VALUES (%s)""", 
 
     [ 
 
     (membername.text) 
 
     ]) 
 
    for memberrole in member.findAll("div", {"class": ""}): 
 
     print(memberrole.text) 
 
     cur.execute("""INSERT INTO team (role) 
 
     VALUES (%s) 
 
     WHERE name=%s""", 
 
     [ 
 
     (memberrole.text), 
 
     (mn) 
 
     ]) 
 
db.commit() 
 
db.close()

回答

0

SQL INSERT總是創建一個新的行。如果你想改變現有行(或幾行或全部行)使用UPDATE,這裏UPDATE team SET role=%s WHERE name=%s

注意如果name沒有被定義爲表的(單柱)PRIMARY KEY或UNIQUE約束,這個代碼可以創建一個額外的行具有相同的name與現有行,如果你重複這個過程無限這樣的行數,這個UPDATE會影響所有這些行。