注意:
database:指连接的哪一个数据库
cache_count:指的是每20条数据插入一次
执行插入调用时,输入的参数格式为:对象.insert(“表名”,列表,列表)
import pymysql
#执行sql提交关闭
class MySQLHelper:
def __init__(self,user="root", password="",host="127.0.0.1",database="spider", port=3306,charset="utf8",cache_count = 20):
#建立连接
self.conn = pymysql.connect(user=user,password=password,host=host,database=database,port=port,charset=charset)
#获取游标
self.cursor = self.conn.cursor()
#为了优化executemany,多少数据插入一次
self.cache_count = cache_count
#缓存数据的地方
self.cache_data_list = []
#避免最后一次数据丢失
self.sql = None
def insert(self,table_name,field_list,data):
#根据表明和字段名拼接sql
self.sql = f"insert into {table_name}({','.join(field_list)}) values ({','.join(['%s' for i in range(len(field_list))])})"
# print(self.sql)
self.cache_data_list.append(data)
if len(self.cache_data_list) > self.cache_count:
self.cursor.executemany(self.sql,self.cache_data_list)
self.conn.commit()
self.cache_data_list.clear()
def close(self):
#避免最后一次数据的丢失
self.cursor.executemany(self.sql,self.cache_data_list)
self.conn.commit()
self.cursor.close()
self.conn.close()