Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment modifiez-vous le niveau d'isolation SQL de Python à l'aide de MySQLdb ?

Je ne pense pas que cela fonctionne pour le pilote MySQLdb ; vous devrez émettre des requêtes distinctes :

cur = conn.cursor()
cur.execute("SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED")
cur.execute("SELECT @@session.tx_isolation")
print cur.fetchall()[0]
cur.execute("SELECT * FROM bar")
print cur.fetchall()
cur.execute("SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ")
cur.execute("SELECT @@session.tx_isolation")
print cur.fetchall()[0]

# output
('READ-UNCOMMITTED',)
(('foo',), ('bar',))
('REPEATABLE-READ',)

La méthode execute() du curseur MySQLdb ne voit que la première requête jusqu'au point-virgule :

cur.execute("SELECT * FROM bar WHERE thing = 'bar'; SELECT * FROM bar")
print cur.fetchall()

# output
(('bar',),)