I am using mysqldb in python.
I need to do the following for a table.
1) Lock
2) Read
3) Truncate the table
4) Unlock
When I run the below code, I get the below error. So, I am rather unsure on how to lock a table for reading it, then truncating the table. I need to be sure that no other connection reads the data.
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_listprint '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 getOneTimeOnlyAsinscursor.execute(query)File "/usr/lib/pymodules/python2.7/MySQLdb/cursors.py", line 166, in executeself.errorhandler(self, exc, value)File "/usr/lib/pymodules/python2.7/MySQLdb/connections.py", line 35, in defaulterrorhandlerraise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1192, "Can't execute the given command because you have active locked tables or an active transaction")