MySQLdb LIKE '%%%s%%' problem
sjmachin at lexicon.net
Wed Jan 14 11:58:10 CET 2009
On Jan 14, 8:55 pm, gumbah <joost.ruy... at gmail.com> wrote:
> Hi John,
> thanks a lot for your quick reply!
Please don't top-post.
Please answer the question """You don't say what "doesn't work"
means ... did you get exceptions, or just silently not updating?"""
> I tried all of your suggestions but none of them work... I have a clue
> on why it is failing: MySQLdb seems to quote the % characters or
> Even when i do:
> cursor.execute("UPDATE tablename set fieldx='test' WHERE flfieldx is
> null and fieldy like '%therealvalue%' "
Please stop stuffing around with the 'trial 1' method.
What SQL data type is fieldy?
What Python datatype is therealvalue coming from?
print type(realvalue), repr(realvalue)
Are you sure that the datatypes are compatible? Is there perhaps a
Unicode encoding problem?
cursor.execute("select fieldy from tablename")
# dig out a sample result
print type(sample_result), repr(sample_result)
print therealvalue in sample_result
I suggest that you avoid UPDATE and the supersensitive fieldy none of
whose values you can reveal, and try the code on a column with simple
noncontroversial data e.g. if you have an address table with the U.S.
state code in it, we can try a simple query to find all addresses that
are in a state that contains some letter:
state_letter = "A"
sql = "select address_id, state from address where state like %s"
cursor.execute(sql, ("%" + state_letter + "%", ))
That would be my best shot at getting it to work. It is based on this:
If that works, try applying it to a query on fieldy and then to your
More information about the Python-list