2017-02-21 5 views
1

Ich habe schon seit einiger Zeit mit meinem Kopf gegen diese Wand geschlagen. Ich kann diese Einfügeabfrage nicht zum Funktionieren bringen. Liegt es daran, dass ich mehrere Datentypen (int, bool, strings, NoneType) eingefügt habe und %s verwende? Jede Hilfe würde sehr geschätzt werden. Vielen Dank! pymysql: TypeError: Nicht alle Argumente wurden während der Formatierung der Zeichenkette konvertiert.

values = [None, '1.1.1.15', '2.2.2.2', 15, 1, 'hax', 'NULL', 'need to build this', False, 'NULL', 'NULL', 'NULL']

Fehler

:

class DBWork(object): 
    def __init__(self, attackerip=None, victimip=None, shunlen=15, shuncount=1, shunreason=None, shunepoch=None, 
       shunerrorbool=False, shunerror=None, paloaddedepoch=None, paloremovedepoch=None, 
       lastshunlen=15): 
     self.Id = None 
     self.attackerip = attackerip 
     self.victimip = victimip 
     self.shunlen = shunlen 
     self.shuncount = shuncount 
     self.shunreason = shunreason 
     self.shunepoch = shunepoch 
     self.shundatetime = 'need to build this' 
     self.shunerrorbool = shunerrorbool 
     self.shunerror = shunerror 
     self.paloaddedepoch = paloaddedepoch 
     self.paloremovedepoch = paloremovedepoch 
     self.lastshunlen = lastshunlen 
     self.shunlen = shunlen 
     self.newshunlen = lastshunlen * shuncount 

    def HistoryInsert(self): 
     insert_query = (
      "INSERT INTO `autoshun`.`shunhistory` " 
      "(Id, attackerip, victimip, shunlen, shuncount, shunreason, shunepoch, shundatetime, shunerrorbool, " 
      "shunerror, paloaddedepoch, paloremovedepoch) " 
      "VALUES " 
      "(NULL, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);" 
     ) 
     values = [None, self.attackerip, self.victimip, self.shunlen, self.shuncount, self.shunreason, self.shunepoch, 
        self.shundatetime, self.shunerrorbool, self.shunerror, self.paloaddedepoch, self.paloremovedepoch] 
     print values 
     self.cur.execute(insert_query, values) 

sample = DBWork(attackerip='1.1.1.15', victimip='2.2.2.2', shunlen=15, shuncount=1, shunreason='hax', shunerrorbool=True) 

sample.DBConnect() 
sample.HistoryInsert() 

Werte gekennzeichnet ist, übergeben

Traceback (most recent call last): 
    File "/home/dobbs/PycharmProjects/autoshun/sqlobjects.py", line 102, in <module> 
    sample.HistoryInsert() 
    File "/home/dobbs/PycharmProjects/autoshun/sqlobjects.py", line 95, in HistoryInsert 
    self.cur.execute(insert_query, values) 
    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 

Antwort

1

Gehen Sie weiter und lassen Sie den id Feld. MySQL wird wissen, was zu tun ist:

insert_query = (
     "INSERT INTO `autoshun`.`shunhistory` " 
     "(attackerip, victimip, shunlen, shuncount, shunreason, shunepoch, shundatetime, shunerrorbool, " 
     "shunerror, paloaddedepoch, paloremovedepoch) " 
     "VALUES " 
     "(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);" 
    ) 

    values = [self.attackerip, self.victimip, self.shunlen, self.shuncount, self.shunreason, self.shunepoch, 
       self.shundatetime, self.shunerrorbool, self.shunerror, self.paloaddedepoch, self.paloremovedepoch] 

Wie ist Ihre Abfrage eine NULL hat und Sie versuchen, für diese None in None ohne einen Parameter zu übergeben.

+0

DANKE !! das war es definitiv. – dobbs

+1

Prost, Kumpel. Happy Coding für Sie! – bernie

Verwandte Themen