1 def writeToDB(data): 2 try: 3 with conn.cursor() as cur: 4 for i in range(len(data)): 5 # get sql 6 cur.execute(writing_sql) 7 conn.commit() 8 9 except Exception: 10 print('There is exception happened!', Exception) 11 traceback.print_exc() 12 conn.rollback() 13 finally: 14 conn.close() 15 16 conn = pymysql.connect(user="root", password="root", database=write_db, host="127.0.0.1", charset='utf8') 17 for chunk in reader: 18 data = chunk.values 19 db_data = [] 20 for item in data: 21 db_data.append(item[0].split(" ")) 22 db_data = np.array(db_data) 23 writeToDB(db_data)
之前总是报错,说是Connection Already Close;后来才发现是因为写法的问题;在writeToDB的函数中,执行完毕后,将会执行final里面的关闭链接;
但是,其实访问并没有完事,在writeToDB外围还有一层循环,后续还是会继续访问数据库,但是此时链接已经关闭,于是导致了这个问题。后来做了调整,在writeToDB的调用层实现了finally,在writeToDB内部只有exception的异常捕捉。