2016-07-29 66 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人:-( –