2017-10-23 2 views
-2

von meinem Debug-Protokoll, fand ich meinen Prozess unterbrochen worden, ich try-catch in meinem Code wie unten, Wie zu wissen, Prozess in Python unterbrochen?

  try: 
      print "update query : ........" 
      query = ("Update Logs set id = "+str(id)+" where Sid = '"+str(id)+"'") 
      cursor.execute(query) 
      conn.commit() 
     except (MySQLdb.Error, MySQLdb.Warning) as e: 
      sqlerrlogs = open("/log/mysqlerr.log","a") 
      sqlerrlogs.write(str(datetime.now())) 
      sqlerrlogs.write('\n') 
      sqlerrlogs.write(e) 
      sqlerrlogs.write('\n\n') 

aber aus meinem Protokoll, nach dem Druck „Update-Abfrage

gesetzt habe: ..... ... ", es gibt keinen Fehler in meinem Log, wie kann ich meinen Code reparieren, um zu wissen, was passiert ist? meine Python-Version ist 2.7

+0

Wie führen Sie Ihren Prozess? – Sraw

+0

run cron alle zwei Minuten – georgetovrea

+1

Sie wollen wirklich keine String-Interpolation für Ihre Daten verwenden, Sie sind offen für SQL-Injection-Angriffe. Verwenden Sie Abfrageparameter (anstelle von "+ str (value) +" verwenden Sie einen Platzhalter '% s' und übergeben Sie eine Sequenz von Werten als zweites Argument an' cursor.execute() '). –

Antwort

0

Sie alle Fehler fangen können, nicht nur die MySQLdb-Fehler:

import traceback 
try: 
    print "update query : ........" 
    query = ("Update Logs set id = "+str(id)+" where Sid = '"+str(id)+"'") 
    cursor.execute(query) 
    conn.commit() 
except: 
    err = traceback.format_exc() 
    sqlerrlogs = open("/log/mysqlerr.log","a") 
    sqlerrlogs.write(str(datetime.now())) 
    sqlerrlogs.write('\n') 
    sqlerrlogs.write(err) 
    sqlerrlogs.write('\n\n') 
Verwandte Themen