我在python中使用mysqldb。MySQL並鎖定表,讀取,然後截斷
我需要爲表格執行以下操作。
1) Lock
2) Read
3) Truncate the table
4) Unlock
當我運行下面的代碼時,我得到了下面的錯誤。所以,我不確定如何鎖定表格以便讀取它,然後截斷表格。我需要確保沒有其他連接讀取數據。
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")
我這個錯誤是我刪除FROM表而不是trncate。 amz_one_time_only'未鎖定LOCK TABLES – Tampa 2012-08-12 10:25:45
您的表是amz_one_time_only還是asin_one_time_only? – 2012-08-12 10:27:45
哎呦..我不好。有用。謝謝 – Tampa 2012-08-12 10:36:17