一日一技:这个数据库用起来刚刚好

简介: 一日一技:这个数据库用起来刚刚好

摄影:产品经理吃小龙虾的季节到了

阅读本文预计3分29秒

我的公众号是使用Bear这个Mac App来写的。它在官网上写到,所有笔记数据通过SQLite来储存,如下图所示。


SQLite是一个基于文件的关系型数据库,它只有一个文件,但是却最多能储存140TB的数据[1]

SQLite官网给出了一个判断是否适合使用 SQLite 的标准:

  • 如果程序和数据分离且它们通过互联网连接,那么不适合用 SQLite
  • 高并发写入,那么不适合用 SQLite
  • 如果数据量非常大,那么不适合 SQLite
  • 除此之外,选择 SQLite

Linux/macOS 系统都自带 SQLite 数据库,并且使用 Python 自带的模块就能轻易读写 SQLite。本文演示一下 SQLite 的增删改查和联表查询。

创建数据表

SQLite 里面,一个文件就是一个库。所以我们只需要创建数据表就可以了。方法非常简单:

import sqlite3
conn = sqlite3.connect('kingname.db')with conn:    conn.execute('''    CREATE TABLE user (    name TEXT,    age INTEGER,    address TEXT,    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT);    ''')

运行如下图所示:

通过这种方式,我们在当前文件夹下面创建了一个叫做kingname.db的数据库文件,并创建了一个叫做user的表。sqlite3库的数据库链接对象支持上下文管理器,所以只需要with conn:就可以执行 SQL 语句,不需要创建游标。退出缩进时,SQL 语句会自动提交生效。

写入数据

现在我们来写入几条数据:


sql = 'insert into user (id, name, age, address) values(?, ?, ?, ?)'datas = [    (1, 'kingname', 20, '浙江省杭州市'),    (2, '产品经理', 18, '上海市'),    (3, '胖头猪', 8, '吃屁岛')]with conn:    conn.executemany(sql, datas)

运行效果如下图所示:


macOS 上有一个软件叫做 DB Browser for SQLite,可以用来查看我们刚才创建的数据表是否成功:

查询数据

使用 SQL 语句也可以查看数据:


with conn:    datas = conn.execute("select * from user where name = 'kingname'")    for data in datas:        print(data)

运行效果如下图所示:

当然,通过修改row_factory也可以通过列名来读取 数据:


conn.row_factory = sqlite3.Rowwith conn:    datas = conn.execute("select * from user where name = 'kingname'")    for data in datas:        print(data['address'])

运行效果如下图所示:


删除数据

与其他操作一样,删除数据只需要写对应的 SQL 语句即可:



with conn:    conn.execute('delete from user where id = 3')

运行效果如下图所示:

联表查询

本质上还是 SQL 语句的改变,我们先创建另外一个表:


with conn:    conn.execute('''    CREATE TABLE info (    user_id INTEGER,    salary integer,    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT);    ''')    sql = 'insert into info (user_id, salary) values(?, ?)'    datas = [    (1, 99999999),    (2, 0),    ]    conn.executemany(sql, datas)

接下来进行一个联表查询:



with conn:    sql = 'select u.name as name, i.salary as salary from user u inner join info i on u.id=i.user_id'    datas = conn.execute(sql)    for data in datas:        print(f'{data["name"]}的工资是:{data["salary"]}')

运行效果如下图所示:

总结

对于低并发量,程序与数据放在一起的情况,可以使用 SQLite 来存放,它比单独写一个文本文件来存放数据更加可控,更加友好。而且使用 Python 操作 SQLite 只需要使用自带的模块sqlite3即可。当你要把数据交给其他人时,你只需要把生成的这个.db文件交给别人就好了。他们使用任何支持 SQLite 的工具都能打开。

目录
相关文章
|
存储 SQL NoSQL
常见的数据库
常见的数据库
214 6
|
人工智能 API 开发者
免费使用Kimi的API接口,kimi-free-api真香
今年AI应用兴起,各类智能体涌现,但API免费额度有限。为解决这一问题,GitHub上的[kimi-free-api](https://github.com/LLM-Red-Team/kimi-free-api)项目提供了方便,支持高速流式输出、多轮对话等,与ChatGPT接口兼容。此外,还有其他大模型的免费API转换项目,如跃问StepChat、阿里通义Qwen等。该项目可帮助用户免费体验,通过Docker-compose轻松部署。只需获取refresh_token,即可开始使用。这个开源项目促进了AI学习和开发,为探索AI潜力提供了新途径。
2610 3
|
Linux
第七章、Linux磁盘与文件系统管理
第七章、Linux磁盘与文件系统管理
139 0
|
存储 SQL 数据库
数据库—耿建玲视频总结(三)
其实这章很是简单的,索引(编号),其中讲解了索引的优缺点;以及都有什么类别的索引,最后就是如何建立。
|
数据库
数据库(二)
数据查询教程包括单表查询操作,如Select语句用于选取属性,可指定列名、使用别名、计算表达式,并通过Distinct去除重复元组。条件查询(Where子句)支持比较运算,如Between、In、Like(支持模糊匹配)及空值判断。连接查询用于合并多表数据,如内连接、外连接和笛卡尔积。例如,通过连接emp和dept表,可获取员工姓名及其所在部门名称。
108 3
|
存储 数据库 数据库管理
什么是数据库
什么是数据库。
394 2
|
弹性计算 运维 自然语言处理
30分钟,一键拉起基于LLM + AnalyticDB PostgreSQL构建的企业专属Chatbot
ChatGPT的火爆带动AIGC行业近期非常火热,客户对于智能客服,构建企业知识库用于智能问答,写作助手等相关需求非常旺盛;随着ChatGPT 推出Retrieval plugin的方案推出,向量数据库(企业知识库) + 大语言模型 可以快速帮助企业构建专属的chatbot; 本服务是对文章《云原生数据仓库AnalyticDB(ADB)+LLM:构建AIGC时代下企业专属Chatbot》的一个开源实现部署。模型基于ChatGLM-6B,是由清华大学团队开发的是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。
30分钟,一键拉起基于LLM + AnalyticDB PostgreSQL构建的企业专属Chatbot
|
算法 C语言
经典算法之深度优先搜索(DFS)
经典算法之深度优先搜索(DFS)
经典算法之深度优先搜索(DFS)
STM32+ESP8266+QT客户端上位机显示DHT11温湿度与点灯
STM32+ESP8266+QT客户端上位机显示DHT11温湿度与点灯