Bonjour,

Je suis débutant en python et j'ai un bug qui arrive de manière aléatoire que je n'arrive pas à résoudre.

Ma fonction permet de récupérer des statistiques (CPU usage etc...) et insert ces information en base de donnée.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
args = list()
    for k, dev in stats.items():
    for stat in dev:
         args.append((stat[0], instant, stat[1], stat[2], stat[3]))
    if len(args) != 0 :
         MYSQL_CURSOR.executemany("""INSERT INTO stats
                    VALUES (%s, %s, %s, %s, %s)""",
                     args)
         MYSQL_DB.commit()
voici ma fonction. stat[3] est une float dans la base.

La fonction marche mais plante de manière aléatoire. Dons mon fichier de log j'ai cette erreur:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Exception in thread Thread-17675:
Traceback (most recent call last):
  File "/usr/lib/python2.4/threading.py", line 442, in __bootstrap
    self.run()
  File "/usr/lib/python2.4/threading.py", line 607, in run
    self.function(*self.args, **self.kwargs)
  File "/usr/local/sbin/stats.py", line 90, in boucle
    insertBDD(copy.copy(stats), instant - instant % INTERVAL)
  File "/usr/local/sbin/stats.py", line 59, in insertBDD
    args)
  File "/usr/lib/python2.4/site-packages/MySQLdb/cursors.py", line 216, in executemany
    r = self._query(',\n'.join(q))
  File "/usr/lib/python2.4/site-packages/MySQLdb/cursors.py", line 309, in _query
    rowcount = self._do_query(q)
  File "/usr/lib/python2.4/site-packages/MySQLdb/cursors.py", line 273, in _do_query
    db.query(q)
OperationalError: (1054, "Unknown column 'nan' in 'field list'")
Après quelques recherches l'erreur 1054 signifie :
'nan' is a special float value which stands for 'not a number'. You
should not be able to store this into a float column in MySQL.

Ce que je ne comprend pas c'est pourquoi il plante de temps en temps et surtout je ne sais pas quoi changer.

Si vous avez des idées , je suis preneur !

Merci!!