欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python3使用sqlite3構(gòu)建本地持久化緩存的過程

 更新時(shí)間:2023年11月07日 08:52:04   作者:Mike_Zhang  
日常python開發(fā)中會(huì)遇到數(shù)據(jù)持久化的問題,今天記錄下如何使用sqlite3進(jìn)行數(shù)據(jù)持久化,并提供示例代碼及數(shù)據(jù)查看工具,需要的朋友可以參考下

環(huán)境:Windows 10_x64

python版本:3.9.2

sqlite3版本:3.34.0

日常python開發(fā)中會(huì)遇到數(shù)據(jù)持久化的問題,今天記錄下如何使用sqlite3進(jìn)行數(shù)據(jù)持久化,并提供示例代碼及數(shù)據(jù)查看工具。

一、背景描述

python應(yīng)用程序在運(yùn)行過程中被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ù)庫作為持久化是筆記理想的選擇,可現(xiàn)實(shí)情況可能需要python腳本進(jìn)行本地持久化,相較于pickle等方式,sqlite3的持久化方式可擴(kuò)展性比較強(qiáng),方便后續(xù)遷移到mysql等數(shù)據(jù)庫。

二、具體實(shí)現(xiàn)

1、基礎(chǔ)使用示例

查看版本信息

import sqlite3
print(sqlite3.version_info) #顯示sqlite3版本信息
print(sqlite3.sqlite_version) #顯示SQLite版本信息

數(shù)據(jù)庫創(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()

查詢數(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ù)庫
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ù)庫文件可以使用 sqlitestudio 進(jìn)行查看,軟件運(yùn)行效果如下:

下載地址:

https://sqlitestudio.pl/

如果下載過慢,可從如下文末提供的渠道獲取。

2、代碼封裝示例

實(shí)際使用過程中,需要進(jìn)行代碼封裝,以便后續(xù)使用,這里以通話記錄為例演示下封裝過程。

1)定義全局緩存 gDCdrData,用于在內(nèi)存中存放數(shù)據(jù);
2)定義全局隊(duì)列 gQCDR ,用于數(shù)據(jù)傳遞;
3)定義sqlite3持久化文件,并定義保留時(shí)長(zhǎng);
4)創(chuàng)建 ObjCdrItem 類,用于定義item數(shù)據(jù)結(jié)構(gòu);
5)定義sqlite3管理類 ObjCDRMgr,用于管理sqlite3數(shù)據(jù)庫;
6)啟動(dòng) dataGenThrd 線程模擬數(shù)據(jù)創(chuàng)建;
7)啟動(dòng) updateThrd 線程用于數(shù)據(jù)更新;
8)啟動(dòng) cleanThrd 線程用于數(shù)據(jù)清理;

示例代碼如下:

完整代碼可從如下鏈接獲?。?/p>

http://xiazai.jb51.net/202311/yuanma/sqlitestudio_jb51.rar

運(yùn)行效果如下:

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

三、資源下載

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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • numpy.reshape(-1,1)的具體使用

    numpy.reshape(-1,1)的具體使用

    本文主要介紹了numpy.reshape(-1,1)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Python替換NumPy數(shù)組中大于某個(gè)值的所有元素實(shí)例

    Python替換NumPy數(shù)組中大于某個(gè)值的所有元素實(shí)例

    這篇文章主要介紹了Python替換NumPy數(shù)組中大于某個(gè)值的所有元素實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Flask框架 CSRF 保護(hù)實(shí)現(xiàn)方法詳解

    Flask框架 CSRF 保護(hù)實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了Flask框架 CSRF 保護(hù)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了Flask-WTF針對(duì)CSRF攻擊的防護(hù)相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • Python實(shí)現(xiàn)并行抓取整站40萬條房?jī)r(jià)數(shù)據(jù)(可更換抓取城市)

    Python實(shí)現(xiàn)并行抓取整站40萬條房?jī)r(jià)數(shù)據(jù)(可更換抓取城市)

    本文主要是以房?jī)r(jià)網(wǎng)房?jī)r(jià)信息爬蟲為例,對(duì)Python實(shí)現(xiàn)整站40萬條房?jī)r(jià)數(shù)據(jù)并行抓?。筛鼡Q抓取城市)的方法進(jìn)行分析介紹。需要的朋友一起來看下吧
    2016-12-12
  • Python+Scipy實(shí)現(xiàn)自定義任意的概率分布

    Python+Scipy實(shí)現(xiàn)自定義任意的概率分布

    Scipy自帶了多種常見的分布,如正態(tài)分布、均勻分布、二項(xiàng)分布、多項(xiàng)分布、伽馬分布等等,還可以自定義任意的概率分布。本文將為大家介紹如何利用Scipy自定義任意的概率分布,感興趣的可以了解下
    2022-08-08
  • Python 跨文件夾導(dǎo)入自定義包的實(shí)現(xiàn)

    Python 跨文件夾導(dǎo)入自定義包的實(shí)現(xiàn)

    有時(shí)我們自己編寫一些模塊時(shí),跨文件夾調(diào)用會(huì)出現(xiàn)ModuleNotFoundError: No module named 'XXX',本文就來介紹一下解決方法,感興趣的可以了解一下
    2023-11-11
  • python第三方模塊xmltodict庫優(yōu)雅處理xml格式為json

    python第三方模塊xmltodict庫優(yōu)雅處理xml格式為json

    這篇文章主要為大家介紹了python第三方模塊xmltodict庫優(yōu)雅處理xml格式為json實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Python中for后接else的語法使用

    Python中for后接else的語法使用

    這篇文章主要介紹了Python中for后接else的語法使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 關(guān)于Python字典(Dictionary)操作詳解

    關(guān)于Python字典(Dictionary)操作詳解

    這篇文章主要介紹了關(guān)于Python字典(Dictionary)操作詳解,Python字典是另一種可變?nèi)萜髂P?,且可存?chǔ)任意類型對(duì)象,如字符串、數(shù)字、元組等其他容器模型,需要的朋友可以參考下
    2023-04-04
  • Python ellipsis 的用法詳解

    Python ellipsis 的用法詳解

    這篇文章主要介紹了Python ellipsis 的用法詳解,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-11-11

最新評(píng)論