在一个小项目中,用到 sqlite3 , 需要同步两个表,懒得装工具, 写了两个函数搞掂。贴代码出来给需要的朋友。
# encoding: utf-8
"""
@author: 陈年椰子
@contact: [email protected]
@version: 1.0
@file: workdb.py
@time: 2019/6/18 17:32
说明
"""
import sqlite3
# 本地数据库
class WorkDb:
def __init__(self, work_db):
self.db = work_db
def connect(self):
return sqlite3.connect(self.db)
def run_sql(self, sql):
conn = self.connect()
cursor = conn.cursor()
ret = cursor.execute(sql)
cursor.close()
conn.commit()
conn.close()
return ret
def insert_sql(self, sql, data):
conn = self.connect()
cursor = conn.cursor()
cursor.execute(sql, data)
cursor.close()
conn.commit()
conn.close()
def exp_market_info(self, data_file):
sql = ''' select makert_key,pd_name,makert_time from market_info '''
data = self.get_sql(sql)
f_e = open(data_file, 'w', encoding='utf-8')
for d in data:
f_e.write("{}\n".format(repr(d)))
f_e.close()
return len(data)
def imp__market_info(self, data_file):
f_e = open(data_file, 'r', encoding='utf-8')
f_data = f_e.readlines()
for d in f_data:
str_info = d.strip()
str_info = str_info[str_info.find('(')+1:str_info.find(')')]
info = tuple(eval("[{}]".format(str_info)))
sql = '''REPLACE INTO market_info
(makert_key,pd_name,makert_time)
VALUES (?, ?, ?)
'''
self.insert_sql(sql, info)
f_e.close()
return len(f_data)
调用方法
# 导出到文件
import workdb
db1 = workdb.WorkDb("market.db")
data_rec = db1.exp_market_info('market_info_0923.data')
print('导出{}条。'.format(data_rec))
# 从文件导入
import workdb
db1 = workdb.WorkDb("market.db")
data_rec = db1.imp__market_info('market_info_0923.data')
print('更新{}条。'.format(data_rec))