[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