programing

업데이트를 위한 mariadb가 올바르게 작동하지 않습니다.

sourcejob 2023. 9. 6. 22:03
반응형

업데이트를 위한 mariadb가 올바르게 작동하지 않습니다.

python mysqldb로 업데이트하기 위해 mariadb를 테스트하고 있었는데 제게 제대로 작동하지 않습니다.두 개의 파이썬 스크립트를 cronjob으로 동시에 실행할 때 동일한 행이 두 번 표시됩니다.내가 두 개의 mysql 콘솔에서 테스트를 하면 모든 것이 잘 됩니다.innodb를 사용합니다.내 코드:

cursor.execute("start transaction")
cursor.execute("SELECT id FROM t1 where tw1=2 AND tw2=1 AND tw3=3 order by id limit 1000 FOR UPDATE")
rows = [r for r in cursor.fetchall()]
ids = []
for row in rows:
    ids.append(str(row['id']))

for i in range(2):

        cursor.execute("SELECT id FROM t2 where tw1="sth" AND tw2 =0 AND tw3=0 LIMIT 1 FOR UPDATE")
        d = cursor.fetchone()
        if not d:
           #here: insert to t2 and get last id as d_id

           cursor.execute("update t2 SET tu1=1,tu2=500,tu3=0 WHERE id = %s" % d_id)

            for row in rows:
                #job with rows

cursor.execute( "Update t1 SET tw1=tw1+1 WHERE id IN (" + ','.join(ids) + ")")
cursor.execute("commit")

t1부터 tw1은 최대 3이어야 하지만 매우 자주 4입니다.ID를 파일에 입력하면 두 개의 다른 프로그램 실행에 대해 동일한 ID가 있음을 알 수 있습니다.내가 뭘 잘못하는 거지?

언급URL : https://stackoverflow.com/questions/33808524/mariadb-for-update-doesnt-work-correctly

반응형