![](/img/trans.png)
[英]Python MySQL parameterized query conflicts with % wildcard in LIKE statement
[英]pymysql: MySQL Parameterized LIKE Query
为什么我会收到TypeError: not all arguments converted during string formatting
在尝试执行此查询时, TypeError: not all arguments converted during string formatting
时TypeError: not all arguments converted during string formatting
? 我需要能够追加%{}%
至我传递的,这样我可以运行在IP LIKE
MySQL查询。
如果这不是使用%
通配符参数化LIKE
查询的正确方法,您该怎么做?
类:
class IpCleaner(object):
def __init__(self, ip):
self.ip = ip
self.iplike = '%{}%'.format(self.ip)
def lookup(self):
self.dbconnect()
select_query = (
"SELECT `name`,`source`,`destination` FROM mytable "
"WHERE (`source` LIKE ? OR `destination` ? );"
)
params = [self.iplike, self.iplike]
print params
self.cur.execute(select_query, params)
print self.cur.fetchall()
实例:
a = IpCleaner('74.121.242.2')
a.lookup()
输出:
Traceback (most recent call last):
['%74.121.242.2%', '%74.121.242.2%']
File "/home/dobbs/shunlibs/IpCleaner.py", line 87, in <module>
a.palorulelookup()
File "/home/dobbs/shunlibs/IpCleaner.py", line 81, in lookup
self.cur.execute(select_query, params)
File "/usr/lib64/python2.7/site-packages/pymysql/cursors.py", line 164, in execute
query = self.mogrify(query, args)
File "/usr/lib64/python2.7/site-packages/pymysql/cursors.py", line 143, in mogrify
query = query % self._escape_args(args, conn)
TypeError: not all arguments converted during string formatting
使用%s
而不是?
在select_query
变量中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.