Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pymysql:MySQL参数化类查询_Python_Mysql_Pymysql_Parameterized Query - Fatal编程技术网

Python pymysql:MySQL参数化类查询

Python pymysql:MySQL参数化类查询,python,mysql,pymysql,parameterized-query,Python,Mysql,Pymysql,Parameterized Query,为什么我在执行此查询时得到TypeError:string格式化期间未转换所有参数?我需要能够将%{}%附加到我正在传递的IP,这样我就可以运行类似于mysql查询的 如果这不是使用%通配符参数化之类的查询的正确方法,您如何做到这一点 类别: class IpCleaner(object): def __init__(self, ip): self.ip = ip self.iplike = '%{}%'.format(self.ip) def

为什么我在执行此查询时得到
TypeError:string格式化期间未转换所有参数?我需要能够将
%{}%
附加到我正在传递的IP,这样我就可以运行类似于
mysql查询的

如果这不是使用
%
通配符参数化
之类的
查询的正确方法,您如何做到这一点

类别:

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
回溯(最近一次呼叫最后一次):
['%74.121.242.2%', '%74.121.242.2%']
文件“/home/dobbs/shunlibs/IpCleaner.py”,第87行,在
a、 palorulelookup()
文件“/home/dobbs/shunlibs/ipclener.py”,第81行,在查找中
self.cur.execute(选择查询,参数)
文件“/usr/lib64/python2.7/site packages/pymysql/cursors.py”,执行中的第164行
query=self.mogrify(query,args)
文件“/usr/lib64/python2.7/site packages/pymysql/cursors.py”,第143行,在mogrify中
查询=查询%self.\u转义\u参数(参数,conn)
TypeError:在字符串格式化过程中并非所有参数都已转换

选择查询
变量中使用
%s
而不是
不确定python代码,但在
目标
之后似乎缺少一个
。糟糕,我会更新它。我还发现它与使用
而不是
%s
有关