sqlite3 數據同步

在一個小項目中,用到 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))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章