2016-03-22 27 views
0

Güncelleme mysql parçasının bazen bir değeri güncelleştirmediği ve rastgele göründüğüne dair bir sorunum var. MYSQL girişlerini "TRANSFER" anahtar değeriyle alır ve aynı anahtar değerini "EXECUTED" olarak ayarlar. Bazen iyi çalışan 20 işlemim var, bazen 10 işlemim var ve yarısı güncellenmedi. TemeldeMySQL güncellemesi güncellenmiyor

try: 
    db = MySQLdb.connect(
     host='localhost', 
     user='root', 
     passwd='pw', 
     db='db', 
    ) 
    db.autocommit(True) 

except Exception as e: 
    sys.exit("Can't connect to db") 

cur = db.cursor() 
setstatus = "EXECUTED" 
for fn in os.listdir('.'): 
    if os.path.isfile(fn): 
     UUID = fn.replace(".ac", "") 
     try: 
      cur.execute(""" 
       UPDATE olorequest 
       SET status = %s 
       WHERE UUID = %s 
      """, (setstatus, UUID)) 
     except Exception as e: 
      raise IOError(e) 
     ftp.storlines('STOR ' + fn, open(fn, 'r+')) 
     try: 
      shutil.move(fn, executed_ac_files) 
     except Exception as e: 
      shutil.move(fn, error_files) 
      raise IOError(e) 
     time.sleep(5) 
+1

en satır (ayrı teknik/bağlantı sorunları) güncellendi değildir 2 nedenden ötürü temelde var diyelim: - predicat karşılanmadı WHERE' '- aslında programında ... lütfen mantıklı bir yanlış anlayış var aynıdır :) – butterFlyNick

+0

Sanırım bunu düzeltmiş olabilir. UUID = fn.replace (". Ac", "") 'den sonra time.sleep (5)' i ekledim. Dosya hala sunucuda yeniden adlandırılmış olabilir ve UUID 'Yok'um dB. Bir kaç test yapıyorum, şimdiye kadar teşekkürler :) –

+0

hoşgeldiniz :) – butterFlyNick

cevap

1

bir satır bir UPDATE istek güncelleme değil nedeni WHERE maddenin yüklem karşılanmazsa olmasıdır. Ek olarak, bu eylemi bir program aracılığıyla gerçekleştirdiğinizde, mantığını ve güvenilirliğini de kontrol edin.