# 数据库,excel表格存储工具
import sqlite3
import xlwt
# 数据库存储
class Save_sql(object):
# 引入类属性:
# 1,数据库名称
dbname = ''
# 2, 表名
table_name = ''
# 3, 字段名(将其暂且存放入一个列表中)
name_list = []
# 定义对象属性
def __init__(self, *data):
# 创建数据库链接
self.connect = ''
# 获取数据库游标
self.cursor = ''
# 引入要传入的数据
self.data = data
# 链接数据库
def con_sql(self):
self.connect = sqlite3.connect(self.dbname)
self.cursor = self.connect.cursor()
# 关闭数据库
def close_sql(self):
self.connect.commit()
self.cursor.close()
self.connect.close()
# 创建表
def create_table(self):
# 连接数据库
self.con_sql()
# 准备sql语句
# 1,准备要插入的字段名称
s = ''
for n in self.name_list:
s1 = ', ' + n + ' CHAR'
s += s1
s += ')'
# 2,拼接完整的sql
sql = "CREATE TABLE IF NOT EXISTS {}(id INTEGER PRIMARY KEY".format(self.table_name)+s
# 执行sql语句
self.cursor.execute(sql)
# 关闭链接
self.close_sql()
# 插入数据
def insert_sql(self):
self.con_sql()
# s 用于累加字段名 v用于累加要存储的数据
s = ''
v = ''
for n in self.name_list:
s1 = n + ','
s += s1
# 因为每增加一个数据,需要在Values中用一个%s占位符,所以:
v1 = '"%s",'
v += v1
# 由于最后一个数据后会多余一个逗号,所以:
s = s[:-1]
# 将数据传入
v = v[:-1] % self.data
# 拼接完整的sql语句:
insert_sql = """INSERT INTO {}({})VALUES({})""".format(self.table_name, s, v)
self.cursor.execute(insert_sql)
self.close_sql()
# excel表格存储
class Save_xlwt(object):
# 表文件的名称
filename = ''
# 表的名称
sheetname = ''
# 表头的名称
name_list = []
@classmethod
def init_work(cls):
cls.workbook = xlwt.Workbook(encoding='utf-8')
cls.sheet = cls.workbook.add_sheet(cls.sheetname)
for idx, f in enumerate(cls.name_list):
cls.sheet.write(0, idx, f)
@classmethod
def save(cls, count, *data):
print('正在写入第{}条数据,请稍后....'.format(count))
"""保存数据"""
for idx, n in enumerate(data):
# 写入数据
cls.sheet.write(count, idx, n)
# 保存文件
cls.workbook.save(cls.filename)
if __name__ == '__main__':
# 用于测试代码,仅供参考,真正投入使用可在爬取数据代码中调用
Save_sql.dbname = 'article.db'
Save_sql.table_name = 'article'
Save_sql.name_list = ['title', 'author', 'content']
s = Save_sql('python', '蟒蛇先生', '你好,python')
s.create_table()
s.insert_sql()
Save_xlwt.filename = 'python_study.xls'
Save_xlwt.sheetname = 'article'
Save_xlwt.name_list = ['title', 'author', 'content']
Save_xlwt.init_work()
Save_xlwt.save(1, 'python', '蟒蛇先生', '你好,python')