我有一个问题,即更新mysql部分有时不会更新值,它似乎是随机的,我无法找到它的原因。它需要带有键值的MYSQL条目" TRANSFER"并且schould将相同的键值设置为" EXECUTED"。有时我有20个工作正常,有时我有10个进程,有一半没有更新。
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)
答案 0 :(得分:1)
基本上,UPDATE
请求中未更新行的原因是不满足WHERE
子句的谓词。另外,当您通过程序执行此操作时,还要检查其逻辑及其可靠性。