MySQL 데이터베이스의 항목 목록을 업데이트하는 서버에서 실행중인 하나의 스크립트가 바탕 화면에서 실행중인 다른 스크립트에 의해 처리됩니다. 스크립트는 매 5 분마다 목록을 처리하는 루프에서 실행됩니다 (서버 측 스크립트도 5 분 주기로 실행됩니다). 첫 번째 루프에서 스크립트는 현재 목록 (기본 SELECT 작업)을 검색하고 두 번째주기에서는 동일한 버전 (업데이트되지 않음) 목록을 가져오고 세 번째 목록에서는 두 번째 단계에서 가져야 할 목록을 가져옵니다. 첫 번째 이후의 모든 패스에서 SELECT 연산은 이전 UPDATE 연산의 데이터를 반환합니다. 당신이 볼 수 있듯이이전 업데이트 결과가 Python3의 mysql select에서 반환되었습니다.
def mainFlow():
activeList=[]
d=()
a=()
b=()
#cycleStart=datetime.datetime.now()
cur = DBSV.cursor(buffered=True)
cur.execute("SELECT list FROM active_list WHERE id=1")
d=cur.fetchone()
DBSV.commit()
a=d[0]
b=a[0]
activeList=ast.literal_eval(a)
print(activeList)
buyList=[]
clearOrders()
sellDecide()
if activeList:
for i in activeList:
a=buyCalculate(i)
if a:
buyList.append(i)
print ('buy list: ',buyList)
if buyList:
buyDecide(buyList)
cur.close()
d=()
a=()
b=()
activeList=[]
print ('+++++++++++++END OF BLOCK+++++++++++++++')
state=True
while state==True:
cycleStart=datetime.datetime.now()
mainFlow()
cycleEnd=datetime.datetime.now()
wait=300-(cycleEnd-cycleStart).total_seconds()
print ('wait=: ' +str(wait))
if wait>0:
time.sleep(wait)
, 내 모든 변수를 초기화 재 오전, 난 일반 커서를 시도했다, 나는 문제의이 종류를 해결하기 위해 예상되는 커밋() 작업을하고있는 중이 야, 내 커서를 폐쇄하고 버퍼가 True 및 False로 설정된 커서는 항상 동일한 결과를 나타냅니다.
MySQL Workbench에서 정확히 동일한 Select 쿼리를 실행할 때 반환되는 결과는 문제가 없습니다.
방해 받고 2 일 동안 붙어 있습니다.
놀라운. 나는 close()와 commit()이 어디에 위치 하는지를 어떻게 바꾸 었는지 반환 된 결과를 변경하는 방법을 여전히 완전히 이해하지 못하고 있지만, 작동한다. – sbeaudin
거래를 커밋하면 변경 사항이 데이터베이스에 게시됩니다. 첫 번째주기에는 변경 사항을 게시하지 않고 두 번째에는 변경 사항을 게시하고 첫 번째와 세 번째에는 게시 한 변경 사항을 처음에 선택합니다 (또는 이와 비슷한 내용). – Ben