python3使用sqlite3構(gòu)建本地持久化緩存的過(guò)程
環(huán)境:Windows 10_x64
python版本:3.9.2
sqlite3版本:3.34.0
日常python開(kāi)發(fā)中會(huì)遇到數(shù)據(jù)持久化的問(wèn)題,今天記錄下如何使用sqlite3進(jìn)行數(shù)據(jù)持久化,并提供示例代碼及數(shù)據(jù)查看工具。
一、背景描述
python應(yīng)用程序在運(yùn)行過(guò)程中被kill掉(比如版本升級(jí)等情況),內(nèi)存中的運(yùn)行數(shù)據(jù)將會(huì)丟失,如果能夠準(zhǔn)實(shí)時(shí)將數(shù)據(jù)存儲(chǔ)在緩存中,程序下次啟動(dòng)時(shí)將繼續(xù)執(zhí)行被kill之前的動(dòng)作。
使用數(shù)據(jù)庫(kù)作為持久化是筆記理想的選擇,可現(xiàn)實(shí)情況可能需要python腳本進(jìn)行本地持久化,相較于pickle等方式,sqlite3的持久化方式可擴(kuò)展性比較強(qiáng),方便后續(xù)遷移到mysql等數(shù)據(jù)庫(kù)。
二、具體實(shí)現(xiàn)
1、基礎(chǔ)使用示例
查看版本信息
import sqlite3 print(sqlite3.version_info) #顯示sqlite3版本信息 print(sqlite3.sqlite_version) #顯示SQLite版本信息
數(shù)據(jù)庫(kù)創(chuàng)建或連接
conn = sqlite3.connect("test1.db")
cur = conn.cursor()數(shù)據(jù)表創(chuàng)建
dbCreate = '''
CREATE TABLE user(
user_id int,
user_name text,
password text
)
'''
cur.executescript(dbCreate)
conn.commit()插入數(shù)據(jù)
conn.execute("INSERT INTO user (user_id,user_name,password) VALUES(1,'user1','123456')")
conn.commit()查詢(xún)數(shù)據(jù)
cursor = conn.execute("SELECT * FROM user")
for row in cursor.fetchall():
print(row)完整示例代碼如下:
#! /usr/bin/env python3
#--*-- ebcoding:utf-8 --*--
import sqlite3
dbCreate = '''
CREATE TABLE user(
user_id int,
user_name text,
password text
)
'''
# 創(chuàng)建或連接數(shù)據(jù)庫(kù)
conn = sqlite3.connect("test1.db")
cur = conn.cursor()
cur.executescript(dbCreate)
conn.commit()
conn.execute("INSERT INTO user (user_id,user_name,password) VALUES(1,'user1','123456')")
conn.execute("INSERT INTO user (user_id,user_name,password) VALUES(2,'user2','123457')")
conn.commit()
cursor = conn.execute("SELECT * FROM user")
for row in cursor.fetchall():
print(row)
conn.close()運(yùn)行效果:

生成的 test1.db 數(shù)據(jù)庫(kù)文件可以使用 sqlitestudio 進(jìn)行查看,軟件運(yùn)行效果如下:

下載地址:
如果下載過(guò)慢,可從如下文末提供的渠道獲取。
2、代碼封裝示例
實(shí)際使用過(guò)程中,需要進(jìn)行代碼封裝,以便后續(xù)使用,這里以通話記錄為例演示下封裝過(guò)程。
1)定義全局緩存 gDCdrData,用于在內(nèi)存中存放數(shù)據(jù);
2)定義全局隊(duì)列 gQCDR ,用于數(shù)據(jù)傳遞;
3)定義sqlite3持久化文件,并定義保留時(shí)長(zhǎng);
4)創(chuàng)建 ObjCdrItem 類(lèi),用于定義item數(shù)據(jù)結(jié)構(gòu);
5)定義sqlite3管理類(lèi) ObjCDRMgr,用于管理sqlite3數(shù)據(jù)庫(kù);
6)啟動(dòng) dataGenThrd 線程模擬數(shù)據(jù)創(chuàng)建;
7)啟動(dòng) updateThrd 線程用于數(shù)據(jù)更新;
8)啟動(dòng) cleanThrd 線程用于數(shù)據(jù)清理;
示例代碼如下:

完整代碼可從如下鏈接獲取:
http://xiazai.jb51.net/202311/yuanma/sqlitestudio_jb51.rar
運(yùn)行效果如下:

數(shù)據(jù)文件打開(kāi)效果如下:

三、資源下載
http://xiazai.jb51.net/202311/yuanma/sqlitestudio_jb51.rar
以上源碼免費(fèi)提供大家,感謝支持!
到此這篇關(guān)于python3使用sqlite3構(gòu)建本地持久化緩存的文章就介紹到這了,更多相關(guān)python3本地持久化緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python中字典的緩存池
- Python中緩存lru_cache的基本介紹和講解
- Python 如何手動(dòng)編寫(xiě)一個(gè)自己的LRU緩存裝飾器的方法實(shí)現(xiàn)
- 在Python 3中緩存Exception對(duì)象會(huì)造成什么后果?
- python編程實(shí)現(xiàn)清理微信重復(fù)緩存文件
- Python使用sqlite3第三方庫(kù)讀寫(xiě)SQLite數(shù)據(jù)庫(kù)的方法步驟
- Python使用sqlite3模塊內(nèi)置數(shù)據(jù)庫(kù)
- python使用sqlite3時(shí)游標(biāo)使用方法
- Python使用flask框架操作sqlite3的兩種方式
- 讓Python更加充分的使用Sqlite3
相關(guān)文章
Python編程中類(lèi)與類(lèi)的關(guān)系詳解
在本文里小編給大家整理了關(guān)于Python編程中類(lèi)與類(lèi)的關(guān)系以及相關(guān)代碼知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。2019-08-08
matplotlib交互式數(shù)據(jù)光標(biāo)實(shí)現(xiàn)(mplcursors)
這篇文章主要介紹了matplotlib交互式數(shù)據(jù)光標(biāo)實(shí)現(xiàn)(mplcursors),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
python mysql斷開(kāi)重連的實(shí)現(xiàn)方法
這篇文章主要介紹了python mysql斷開(kāi)重連的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python3?sys?模塊常用功能及實(shí)戰(zhàn)場(chǎng)景
在Python中,sys模塊是與解釋器交互的橋梁,提供了一系列用于訪問(wèn) Python 解釋器本身和操作系統(tǒng)相關(guān)信息的函數(shù)與變量,本文將系統(tǒng)講解sys模塊的常用功能及實(shí)戰(zhàn)場(chǎng)景,幫助你高效利用其特性,感興趣的朋友跟隨小編一起看看吧2025-11-11
Python模擬登錄網(wǎng)易云音樂(lè)并自動(dòng)簽到
時(shí)隔三周沒(méi)有和大家見(jiàn)過(guò)面了,最近在研究python模擬登陸專(zhuān)題,話不多說(shuō),讓我們愉快地開(kāi)始實(shí)現(xiàn)模擬登陸實(shí)現(xiàn)網(wǎng)易云自動(dòng)簽到,需要的朋友可以參考下2021-06-06
pycharm最新免費(fèi)激活碼至2099年(21.3.18親測(cè)可用)
這篇文章主要介紹了pycharm最新的激活碼及激活碼的使用方法,幫助大家更好的利用pycharm學(xué)習(xí)python,感興趣的朋友可以了解下。2021-03-03
Python 中創(chuàng)建 PostgreSQL 數(shù)據(jù)庫(kù)連接池
這篇文章主要介紹了Python 中創(chuàng)建 PostgreSQL 數(shù)據(jù)庫(kù)連接池,Python 連接 PostgreSQL 是主要有兩個(gè)包, py-postgresql 和 psycopg2 , 而本文的實(shí)例將使用后者,感興趣的小伙伴可以參考一下2021-10-10
Python 基于Twisted框架的文件夾網(wǎng)絡(luò)傳輸源碼
這篇文章主要介紹了Python 基于Twisted框架的文件夾網(wǎng)絡(luò)傳輸源碼,需要的朋友可以參考下2016-08-08

