[Tutor] MySQLdb: cant get '... where field in %s' to work for string sequences

Matt Richardson shortpath at gmail.com
Fri Jun 23 17:48:32 CEST 2006


On 6/22/06, Justin Ezequiel <justin.mailinglists at gmail.com> wrote:
> how can I get 'select ... from ... where field in %s' to work for
> sequences of strings?
> sequences of integers works just fine
>
> import MySQLdb
>
> DBCRED = {'host': 'localhost', 'user': 'userjustin',
>           'passwd': 'passwdjustin', 'db': 'dbjustin'}
>
> ARTICLES = ('XXX99999', 'ABZ00002')
> PIDS = (29379, 29380)
>
> FIXEDARTICLENAME = """SELECT * FROM tblForTransfer2Prodsite
> WHERE articleName IN ('XXX99999', 'ABZ00002')"""
> TESTARTICLENAME = """SELECT * FROM tblForTransfer2Prodsite
> WHERE articleName IN %r""" % (ARTICLES,)
> SQLARTICLENAME = """SELECT * FROM tblForTransfer2Prodsite
> WHERE articleName IN %s"""
>
> FIXEDPID = """SELECT * FROM tblForTransfer2Prodsite
> WHERE pid IN (29379, 29380)"""
> TESTPID = """SELECT * FROM tblForTransfer2Prodsite
> WHERE pid IN %r""" % (PIDS,)
> SQLPID = """SELECT * FROM tblForTransfer2Prodsite
> WHERE pid IN %s"""
>
> if __name__ == '__main__':
>     conn = MySQLdb.connect(**DBCRED)
>     try:
>         cur = conn.cursor()
>         print FIXEDARTICLENAME
>         print TESTARTICLENAME
>         print cur.execute(FIXEDARTICLENAME),
>         print cur.execute(TESTARTICLENAME),
>         # cannot get this to work
>         print cur.execute(SQLARTICLENAME, (ARTICLES,))
>         print
>         print FIXEDPID
>         print TESTPID
>         print cur.execute(FIXEDPID),
>         print cur.execute(TESTPID),
>         # but this does
>         print cur.execute(SQLPID, (PIDS,))
>         print
>     finally: conn.close()
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>

Can you post your error messages?

-- 
Matt


More information about the Tutor mailing list