繁体   English   中英

pymysql:MySQL参数化的LIKE查询

[英]pymysql: MySQL Parameterized LIKE Query

为什么我会收到TypeError: not all arguments converted during string formatting在尝试执行此查询时, TypeError: not all arguments converted during string formattingTypeError: 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM