当前位置: 首页 > article >正文

SQLite的入门级项目学习记录(一)

        从来没有接触过数据库,但是最近有个项目要用到,从0开始记录一下学习的过程,以备忘。

python常见的几个免费数据库        

        在 Python 中,有几个流行的免费数据库选项,可以根据项目需求选择使用。以下是一些常见的免费数据库及其特点:
SQLite
        特点:轻量级、嵌入式数据库,数据存储在一个文件中。
        适用场景:适合小型应用、桌面应用或需要轻量级存储的项目。
        Python 支持:Python 标准库中包含 sqlite3 模块,使用起来非常方便。
PostgreSQL
        
特点:功能强大、开源的关系型数据库,支持复杂查询、事务、扩展。
        适用场景:适合中到大型应用,需要复杂数据操作和高并发处理的项目。
        Python 支持:可以使用 psycopg2 或 asyncpg 等库进行连接和操作。
MySQL/MariaDB
        
特点:开源的关系型数据库,MySQL 是商业版,而 MariaDB 是其社区版的分支。
        适用场景:广泛应用于各种规模的应用,支持高性能和可扩展性。
        Python 支持:可以使用 mysql-connector-python、PyMySQL 或 mysqlclient 等库进行连接和操作。
MongoDB
        
特点:开源的 NoSQL 文档数据库,数据以 BSON 格式存储,支持灵活的数据模型。
        适用场景:适合需要处理大量非结构化数据和大规模数据存储的应用。
        Python 支持:可以使用 pymongo 库进行连接和操作。
Redis
        
特点:开源的内存数据结构存储系统,支持多种数据结构(如字符串、哈希、列表、集合等)。
        适用场景:适用于缓存、实时数据处理和高性能数据存储需求。
        Python 支持:可以使用 redis-py 库进行连接和操作。
        这些数据库都有丰富的 Python 库支持,使得与数据库的交互变得相对简单。选择哪种数据库取决于具体的应用需求和数据处理要求。综合以上,决定使用SQLite。

SQLite

        SQLite 是一个适合多种场景的数据库,包括实时改变和存取数据的情况。
        SQLite 是嵌入式数据库,它的数据存储在一个单一的文件中,这使得它的使用非常方便。        
        SQLite 提供了高度的写入并发能力,并且在设计时就考虑到了实时访问的支持。
        SQLite 的性能也是非常好的,尤其是对于不需要大量并发写操作的小型到中型的应用。对于更复杂的查询或大量写操作,SQLite 的性能可能会受到影响,因为它的并发写机制是通过序列化写操作来实现的。然而,对于大多数实时应用来说,SQLite 通常已经足够使用。

基本功能和框架的规划

根据别人的demo和AI提供的教程,进行基本框架的规划   

 1、SQLite基本功能的demo

import sqlite3

# 创建数据库连接
conn = sqlite3.connect('example.db')

# 创建游标
cursor = conn.cursor()

# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    email TEXT NOT NULL UNIQUE
)
''')

# 插入数据
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('张三', 'zhangsan@example.com'))
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ('李四', 'lisi@example.com'))

# 提交事务
conn.commit()

# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()

# 打印查询结果
for row in rows:
    print(row)

# 关闭游标和连接
cursor.close()
conn.close()

        总结一下:创建连接⇒创建连接的游标⇒创建表(如果表不存在)⇒插入数据⇒提交事务⇒查询数据⇒关闭游标和连接。这就是SQLite的大致套路了。

2、数据的批量存储

        本项目需要实时连续存储一个变量,每秒钟大约有十几个值,如果每次的新数据都实时写入数据库,会带来性能和资源的浪费。因此,需要定期或者定批写入数据。设数据池,当数据池的数据元素数量达到批写入设定阈值或者周期写入定时器超时,就将数据写入数据库并清空数据池。

3、使用长连接 

        由于数据更新频率很高,使用长时间运行的连接来减少连接开销。 

4、数据的字段

        这个项目只需要记录实时变化的变量即可,无需进行关联搜索查询,所以无需增加用以区分的ID和戳,仅仅记录变量的实际值即可。

5、异步写入

        将数据插入操作异步化,通过在后台线程或进程中处理数据插入,可以避免阻塞主线程。

6、 数据归档和维护

        定期归档:对于高频率的实时数据存储,数据量可能会迅速增加。考虑定期将数据归档到另一个数据库或文件中,以便保持数据库的性能。  

        数据清理:根据需要定期清理旧的数据或将其移动到存档表中。

7、处理异常、优化性能

        在使用中再持续改进。

  


http://www.kler.cn/news/306104.html

相关文章:

  • Kafka 消息丢失如何处理?
  • kubeadm方式安装k8s续:
  • 【Unity实战】SO反序列化正确姿势
  • 【智路】智路OS Airos Edge 2.0 Quick Start
  • 利用 FastAPI 和 Jinja2 模板引擎快速构建 Web 应用
  • 通过logstash同步elasticsearch数据
  • 【资料分析】常见的坑
  • 文件外发怎么保证安全
  • sqli-labs靶场自动化利用工具——第1关
  • 在Coontroller层中我们经常使用的@RequestParam, @PathVariable, @RequestBody ,区别以及各自的使用场景
  • golang实现从服务器下载文件到本地指定目录
  • 简单接口自动化框架实现(Python+requests+pytest)
  • _Array类,类似于Vector,其实就是_string
  • 编写程序模版的搭建
  • Android Kotlin 中的 `groupBy` 方法详解
  • 手机玩机常识____展讯芯片刷机平台ResearchDownload的一些基本常识与问题解决
  • 基于CosyVoice的多语言语音合成技术解析
  • STM32(十三):通信协议——USART串口协议
  • React源码学习(一):如何学习React源码
  • Python学习——【1.2】数据类型、数据类型转换
  • yjs04——matplotlib的使用(多个坐标图)
  • Java网络编程 TCP通信(Socket 与 ServerSocket)
  • (批处理)设置延时+设置关机倒计时
  • Flink CEP(复杂事件处理)高级进阶
  • 【大数据方案】智慧大数据平台总体建设方案书(word原件)
  • 应用层协议HTTP介绍
  • 【自主搭建博客网站 第一篇章】前情提要
  • ??Ansible——ad-hoc
  • 修改 HTTP 和 HTTPS 代理设置为 `http://127.0.0.1:8118
  • 【Android Studio】API 29(即Android 10)或更高版本,在程序启动时检查相机权限,并在未获取该权限时请求它