0
Warum bekomme ich TypeError: not all arguments converted during string formatting
beim Versuch, diese Abfrage auszuführen? Ich muss %{}%
an die IP anfügen können, die ich übergebe, damit ich eine LIKE
mysql Abfrage laufen lassen kann.pymysql: MySQL parametrisiert LIKE Query
Wenn dies nicht die richtige Methode ist, um eine LIKE
Abfrage mit dem %
Wildcard zu parametrisieren, wie machst du das?
Klasse:
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()
Instantiation:
a = IpCleaner('74.121.242.2')
a.lookup()
output:
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
Ich bin mir nicht sicher über den Python-Code, aber es sieht so aus, als ob Ihnen nach 'Ziel' ein' LIKE' fehlt. – Uueerdo
mein Schlechter, ich werde das aktualisieren. Außerdem habe ich gerade herausgefunden, dass es etwas damit zu tun hat, '' 'anstelle von'% s' zu verwenden – dobbs