2016-07-29 68 views
0

我正在使用python中的excel工作表生成查詢,然後使用conn.execute(query)執行查詢。由於字符串值「」之一的mysql查詢失敗

但是,一個查詢失敗,因爲它在其中一個值字符串的末尾有\。在下面的查詢查找VALUES ("test", "ABCD\"

INSERT INTO S_account(Sub, AccName, AccTeam, Terr, AccOwner, 
Level1, GAccount, Customer, City, State, EndCusName, AccID) 
VALUES ("test", "ABCD\", "test", "test", "test", "No", "Yes", 
"test", "test", "test", "asdasdas") 
ON DUPLICATE KEY UPDATE 
Sub = VALUES(Sub), AccName = VALUES(AccName), AccTeam = VALUES(AccTeam), 
Terr = VALUES(Terr), AccOwner = VALUES(AccOwner), Level1 = VALUES(Level1), 
GAccount = VALUES(GAccount), Customer = VALUES(Customer), 
City = VALUES(City), State = VALUES(State), EndCusName = VALUES(EndCusName) 

我想下面的命令,但它並沒有幫助。

query = re.sub('\$', '' query) 
+1

您應該使用準備好的語句和參數綁定。我不知道Python,但肯定它有這個功能 – Phil

回答

1

您指定的12列在您的INSERT聲明,但只包括了11列的值:

INSERT INTO S_account(Sub, AccName, AccTeam, Terr, AccOwner, Level1, 
         GAccount, Customer, City, State, EndCusName, AccID) 
VALUES ("test", "ABCD\", "test", "test", "test", "No", 
     "Yes", "test", "test", "test", "asdasdas", MISSING) -- no value for AccID 

我不認爲反斜槓有什麼關係呢。你的錯誤信息是否真的提到反斜槓是一個問題?

+0

那醇'栗子,很好發現 – Martin

+0

我錯過了它,而在這裏打字。感謝您發現它。 它實際上停止在其中一個字符串值中看到\。 有沒有反正我可以替換\每次出現在字符串的結尾? – r0xette

+0

作爲一個原始的MySQL查詢,我上面給出的應該沒有錯誤地運行。我的猜測是,如果你在Python字符串中有這樣的查詢,它將'\「'解釋爲_escaped_引用。你可以嘗試替換這些出現的事嗎?我不是Python人:-( –