Sto usando il modulo MySQLdb per Python (binario precompilato v1.2.3 per Windows Python 2.7) per leggere e scrivere dati in un database MySQL . Una volta che una connessione è aperta, posso usare quella connessione per osservare le modifiche apportate al database sulla stessa connessione, ma non vedere le modifiche apportate usando un'altra connessione, indipendentemente dal fatto che l'altra connessione sia fatta in Python o che ci sia una modifica fatta usando il client della riga di comando MySQL. Nel caso in cui sto facendo aggiornamenti usando Python, si noti che sto eseguendo il comando commit() sulla connessione.La connessione MySQL-python non vede le modifiche apportate al database su un'altra connessione anche dopo il commit della modifica
Esempio di programma che inserisce nuovi record in una tabella di test con una colonna VARCHAR:
import MySQLdb
conn = MySQLdb.connect("localhost", "test", "test", "test")
c = conn.cursor()
c.execute("INSERT INTO test VALUES(%s)", ("Test",))
conn.commit()
c.close()
conn.close()
Esempio di programma che finisce per stampare un conteggio di record costante (invece di stampare più record di up-to-data contare). Sono stato in grado di aggiornare il conteggio uccidendo e rieseguendo lo script o aprendo una nuova connessione ogni volta che viene eseguita l'istruzione SELECT
.
import MySQLdb
conn = MySQLdb.connect("localhost", "test", "test", "test")
while True:
input = raw_input("Enter anything: ")
if input == "exit":
break
c = conn.cursor()
c.execute("SELECT COUNT(*) FROM test")
res = c.fetchone()[0]
c.close()
print("Number of records: %d" % res)
'DeprecationWarning: begin() è non standard e verrà rimosso in 1.3' –
Commentare' conn.begin() 'e rimuovere il commento' conn.commit() '. Funzionerà anche. – Nilesh