Sto usando pymysql.cursors
e un esempio di codice semplificato che consente di caricare una riga da una tabella e stampa ogni secondo è:PyMySQL apparentemente restituisce valori vecchi/di istantanea/non rieseguire la query?
#!/usr/bin/env python3
import pymysql.cursors
import time
conn = pymysql.connect(host='localhost',
# credentials etc.
cursorclass=pymysql.cursors.DictCursor)
while True:
with conn.cursor() as cursor:
cursor.execute("SELECT * FROM state limit 1;")
vals = cursor.fetchone()
print (vals)
time.sleep(1)
stato è una tabella con una sola riga di un database MariaDB.
Ora mentre è in esecuzione se accendo un client MySQL e cambio il contenuto della tabella, questo script continua a pompare il valore originale; a quanto pare non sta consultando il database (!).
Sono un neofita di Python e sono sicuramente nuovo di PyMySQL, quindi apols se questa è una domanda stupida ma ho un po 'di RTM e sembra solo strano.
Stai commettendo la tua modifica nel tuo client MySQL? – Andy
Sì, l'autocommit del mio client e l'ho provato. – artfulrobot