Yavar
Yavar

Reputation: 11933

Simple Python SQL Query

Simply trying to build a sql query to execute from python. Getting SQL syntax error.

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)")

However note that when I execute the following (it works perfectly fine):

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'")

Upvotes: 0

Views: 178

Answers (1)

Martijn Pieters
Martijn Pieters

Reputation: 1121366

You need to make elem a separate parameter, not part of the query string:

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,))

That last parameter needs to be a tuple with one element, and to create one of those you need to have that one comma there too.

Upvotes: 4

Related Questions