using like and % in MySQLdb

Dave Harrison dave at nullcube.com
Thu Aug 7 06:39:33 EDT 2003


> >Im sure this is a really obvious problem but :
> >
> >self.curs.execute(
> >        """SELECT * FROM user WHERE login LIKE '%%s%'""", [login]
> >        )
> >
> >will not work ... gives me an "unsupported format character ''' (0x27)"
> >
> >escaping the %'s with % as the doco recommends wont work either.
> >
> Why don't you do
> self.curs.execute(
> 	"""SELECT * FROM user WHERE login LIKE %s""", ("%"+login+"%", ))
> 
> The problem with escaping the % characters is, that MySQLdb converts
> self.curs.execute("""SELECT * FROM user WHERE login LIKE '%%%s%%'""" , 
> (login,))
> to
> "SELECT * FROM user WHERE login LIKE '%'dave'%'"
> and I don't know how to prevent this.

hehe yeah Id been testing what I was doing against my mysql client and couldnt work out why the module kept adding the '', you're solution works a treat, thanks torsten

> >however this :
> >
> >self.curs.execute(
> >        """SELECT * FROM user WHERE login LIKE '%dave%'"""
> >        )
> >
> >does work
> >
> >so what's the go ?
> >cheers
> >Dave
> >
> 
> -- 
> http://mail.python.org/mailman/listinfo/python-list





More information about the Python-list mailing list