how to replace and string in a "SELECT ... IN ()"
Bruno Desthuilliers
bruno.42.desthuilliers at websiteburo.invalid
Fri Sep 26 07:00:35 EDT 2008
bcurtu a écrit :
> Hi,
>
> I have a BIIIIIG problem with the next query:
>
> cursor.execute("""
> SELECT titem.object_id, titem.tag_id
> FROM tagging_taggeditem titem
> WHERE titem.object_id IN (%s)
> """,( eid_list))
>
> eid_list is suppossed to be a list of ids = [1,5,9]
>
> How can I make it work?
You have to build your sql statement in three stages:
# stage 0: the template
sql_template = """
SELECT titem.object_id, titem.tag_id
FROM tagging_taggeditem titem
WHERE titem.object_id IN (%s)
"""
# stage 1: build correct place_holders string for the actual number
# of items in eid_list
place_holders = ", " .join("%s" for x in xrange(len(eid_list)))
# stage 2 : build the effective sql statement
sql = sql_template % place_holders
# ok, let's go:
cursor.execute(sql_template, eid_list)
NB : you can of course make it in a single statement, but readability
will suffer:
cursor.execute(
"""
SELECT titem.object_id, titem.tag_id
FROM tagging_taggeditem titem
WHERE titem.object_id IN (%s)
""" % ", " .join("%s" for x in xrange(len(eid_list))),
eid_list
)
HTH
More information about the Python-list
mailing list