MySQL et verrouiller une table, lire, et puis tronquer

Je suis à l'aide de mysqldb en python.

J'ai besoin de faire ce qui suit pour avoir une table.

1) Lock
2) Read
3) Truncate the table
4) Unlock

Lorsque j'exécute le code ci-dessous, j'obtiens l'erreur ci-dessous. Donc, je suis plutôt vous ne savez pas comment verrouiller une table pour la lecture, puis la troncation de la table. J'ai besoin d'être sûr qu'aucune autre connexion lit les données.

asin_list = [] 
conn = MySQLdb.connect(host=parms['database']['operations']['host'],user=parms['database']['operations']['username'],passwd=parms['database']['operations']['password'],db=parms['database']['operations']['database'])
cursor = conn.cursor()
query = "LOCK TABLES asin_one_time_only READ"
cursor.execute(query)
print 'fu1'
query = """select asin FROM asin_one_time_only""" 
cursor.execute(query)
rows = cursor.fetchall()
for row in rows:
asin_list.append(row[0]) 
print asin_list
print 'fu2'
query = "UNLOCK TABLES;"
cursor.execute(query)
conn.commit()
print 'fu3'
query = "LOCK TABLES asin_one_time_only WRITE"
cursor.execute(query)
query = """truncate table amz_one_time_only""" 
cursor.execute(query)
conn.commit()
print 'fu3'
query = "UNLOCK TABLES;"
cursor.execute(query)
conn.commit()
cursor.close()
conn.close() 
Traceback (most recent call last):
File "/home/ubuntu/workspace/Amazon-Products-Crawler-1/threaded_crawl.py", line 1086, in <module>
onetime = getOneTimeOnlyAsins(parms)
File "/home/ubuntu/workspace/Amazon-Products-Crawler-1/threaded_crawl.py", line 109, in getOneTimeOnlyAsins
cursor.execute(query)
File "/usr/lib/pymodules/python2.7/MySQLdb/cursors.py", line 166, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/pymodules/python2.7/MySQLdb/connections.py", line 35, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1192, "Can't execute the given command because you have active locked tables or an active transaction")

OriginalL'auteur Tampa | 2012-08-12