[Tutor] MySQLdb: cant get '... where field in %s' to work for string sequences
Justin Ezequiel
justin.mailinglists at gmail.com
Fri Jun 23 03:59:35 CEST 2006
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()
More information about the Tutor
mailing list