2013-05-08 239 views
0

简单地试图构建一个sql查询来从python执行。获取SQL语法错误。简单的Python SQL查询

for elem in phraseList: 
    cursor.execute("SELECT PHRASE,COUNT(ID) FROM TEST.NERD WHERE LABEL LIKE '%PRT%' \ 
    AND ID IN (SELECT DISTINCT ID FROM TEST.NERD WHERE LABEL LIKE '%COND%' \ 
    AND PHRASE LIKE (%s)),(elem)") 

但是请注意,当我执行以下命令(其工作完全正常):

for elem in phraseList: 
    cursor.execute("SELECT PHRASE,COUNT(ID) FROM TEST.NERD WHERE LABEL LIKE '%PRT%' \ 
    AND ID IN (SELECT DISTINCT ID FROM TEST.NERD WHERE LABEL LIKE '%COND%' \ 
    AND PHRASE LIKE '%dmg'") 

回答

4

你需要让elem一个单独的参数,而不是查询字符串的一部分:

cursor.execute("SELECT PHRASE,COUNT(ID) FROM TEST.NERD WHERE LABEL LIKE '%PRT%' \ 
    AND ID IN (SELECT DISTINCT ID FROM TEST.NERD WHERE LABEL LIKE '%COND%' \ 
    AND PHRASE LIKE %s", (elem,)) 

这最后一个参数需要与一个元素的元组,以及创建这些,你需要有一个逗号有太多的一个。

+0

感谢@Martijn的帮助。它确实有效。 +1。接受 – Yavar 2013-05-08 08:11:14

+0

我已经发布了另一个问题,我现在面临这里http://stackoverflow.com/questions/16435676/python-sql-valueerror。再次感谢您的帮助。 – Yavar 2013-05-08 08:11:41

+0

对不起,我没有注意到'%PART%'等问题;应该已经意识到这可能是MySQLdb适配器。在那里回答。 – 2013-05-08 08:34:34