百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

Python数据库操作之SQLite

liebian365 2024-11-19 06:28 24 浏览 0 评论

1. 简介

SQLite 是一种嵌入式关系型数据库,其本质就是一个文件,它占用资源低、处理速度快、跨平台、可与 Python、Java 等多种编程语言结合使用。

SQLite 是一个进程内的库,可以自给自足、无服务器、无需配置、支持事务,Python 可以通过 sqlite3 模块与 SQLite3 集成(3 是版本号),Python 2.5.x 以上版本内置了 sqlite3 模块,我们可以直接使用。

2. 数据类型

2.1 存储类型

存储类型是数据保存成文件后的表现形式,主要包括如下几种:

NULL——空值
REAL——浮点数类型
TEXT——字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储
BLOB——二进制表示
INTEGER——有符号的整数类型

2.2 亲和类型

亲和类型是数据库表中列数据对应存储类型的倾向性,当数据插入时,字段的数据将会优先采用亲缘类型作为值的存储方式,主要包括如下几种:

NONE——不做任何转换,直接以该数据所属的数据类型进行存储
TEXT——该列使用存储类型 NULL、TEXT 或 BLOB 存储数据
NUMERIC——该列可以包含使用所有五个存储类型的值
REAL——类似于 NUMERIC,区别是它会强制把整数值转换为浮点类型
INTEGER——类似于 NUMERIC,区别是在执行 CAST 表达式时

2.3 声明类型

声明类型是我们写的 SQL 时字段定义的类型,常用的声明类型与亲和类型具有如下对应关系:

BLOB——NONE
DOUBLE、FLOAT——REAL
VARCHAR、TEXT、CLOB——TEXT
INT、INTEGER、TINYINT、BIGINT——INTEGER
DECIMAL、BOOLEAN、DATE、DATETIME ——NUMERIC

3. 基本使用

3.1 连接数据库

# 导入模块
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')

数据库不存在就会被自动创建。

3.2 游标

连接数据库后,需要通过游标进行相应 SQL 操作,所以要先创建游标。

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

3.3 建表

我们在 test.db 库中新建一张表 person。

# 创建表
cs.execute('''CREATE TABLE person
       (id varchar(20) PRIMARY KEY,
        name varchar(20));''')
# 关闭 cursor
cs.close()
# 提交当前事务
conn.commit()
# 关闭连接
conn.close()

3.4 新增

向表 person 中插入几条数据。

# 导入模块
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 创建游标
cs = conn.cursor()
# 新增
cs.execute("INSERT INTO person (id, name) VALUES ('1', '张三')")
cs.execute("INSERT INTO person (id, name) VALUES ('2', '李四')")
cs.execute("INSERT INTO person (id, name) VALUES ('3', '王五')")
cs.execute("INSERT INTO person (id, name) VALUES ('4', '赵六')")
cs.execute("INSERT INTO person (id, name) VALUES ('5', '朱七')")
cs.close()
conn.commit()
conn.close()

3.5 删除

删除 person 表中 id 为 3 这条数据。

# 导入模块
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 创建游标
cs = conn.cursor()
# 删除
cs.execute("DELETE FROM person WHERE id = '3'")
conn.commit()
cs.close()
conn.close()

3.6 修改

修改一下 person 表中 id 为 1 这条数据的 name 属性值。

# 导入模块
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 创建游标
cs = conn.cursor()
# 修改
cs.execute("UPDATE person set name = '张四' WHERE id = '1'")
conn.commit()
cs.close()
conn.close()

3.7 查询

看一下查询操作。

# 导入模块
import sqlite3
# 连接数据库
conn = sqlite3.connect('test.db')
# 创建游标
cs = conn.cursor()
# 查询
cs.execute("SELECT id, name FROM person")
# 获取查询结果集中的下一行
print(cs.fetchone())
# 获取查询结果集中的下几行
print(cs.fetchmany(2))
# 获取查询结果集中剩下的所有行
print(cs.fetchall())
cs.close()
conn.close()

3.8 图形化工具

我们可以通过 SQLite 图形化工具 SQLiteStudio 更加直观地查看其表面结构、数据等,下载地址为:https://github.com/pawelsalawa/sqlitestudio/releases,进到下载页面后根据自己的系统选择下载版本,以 Windows 为例:选择免安装版 SQLiteStudio-3.2.1.zip,下载完毕后解压,再点击 SQLiteStudio.exe 启动。

启动后依次点击:Database、Add a database,弹出如下窗口:



我们点击文件下方右侧的绿色加号或文件夹按钮,接着选择 test.db 文件,选完后点击测试连接按钮,如果连接正常,再点击 OK 按钮,最后我们就可以通过 SQLiteStudio 对 test.db 进行直观的查看了。



图片来源于网络

相关推荐

深度解密epoll 如何工作的?(epoll基本处理流程)

epoll...

大乐透第19082期:头奖开出7注1000万分落六地 奖池41亿元

2019年7月17日晚开奖的体彩超级大乐透第19082期开奖号码为:前区06、18、20、21、31,后区03、04。本期大乐透前区号码五区比为1:0:3:0:1,二区和四区号码没有给出。当期前区和值...

【开奖】4月27日周六:福彩、体彩(2021年4月27日体彩开奖结果)

4月27日开奖福彩3D第2019110期:61222选5第2019110期:0812202122排列3第19110期:303排列5第19110期:30305大乐透第19047期:0304...

“红狒狒”落户哈尔滨铁路局(哈尔滨铁路红肠)

这几天,“红人”“红狒狒”在牡丹江机务段可引起了不小的轰动,众粉丝争相与其拍照留念,在该段人气爆棚!“红狒狒”到底何许人也?“红狒狒”,中文名:和谐3D型电力机车;绰号:红狒狒、番茄;制造商:大连机...

2D、3D、2.5D,做游戏还是搞噱头?玩家都晕了

前言游戏类型就像某种潮流,一种流行罢,另一种接棒成为主流。前两年的新作大多以“开放世界”为标签,在追求纯沙盒的过程中打造出一些细致的分类,比如说“类GTA沙盒”。诚然,纯碎的沙盒游戏并不多见,业内只有...

《战神4》PC版宣传片发布 GTX 1070即可60帧畅玩

在今年10月的时候索尼PlayStation官方正式宣布圣莫尼卡2018年的《战神4》将于2022年1月14日推出PC版本,官方在今天公布了一段PC版宣传片,并且公开了游戏的配置需求。下面让我们一起来...

男星深情好丈夫形象崩塌,半夜搂美女坐大腿,举止亲密

近日,于晓光被拍到深夜在酒吧玩,结束后与一名女子一起上车离开。上车后,女子直接坐在了他腿上,他也顺势搂着美女,美女满脸笑容地坐在他腿上玩手机离开。可能有人会好奇,于晓光是谁呢?于晓光是韩国艺人秋瓷炫的...

d3d12dll丢失怎么修复?d3d12dll加载失败怎么解决?

  d3d12.dll丢失怎么修复?d3d12.dll加载失败怎么解决?很多朋友想要运行游戏的时候都会遇到这个问题,这种情况该怎么办呢?今天系统之家小编给朋友们讲讲具体的解决方法,操作其实还蛮简单的。...

许多玩家反馈《生化4RE》PC一直崩溃 无法进入游戏

今日(3月24日),卡普空《生化危机4:重制版》正式发售,然而有部分PC玩家遇到了游戏崩溃等问题。很多玩家在贴吧发帖称游戏遇到了严重的崩溃问题,且经常反复,报错代码普遍为FatalD3Derror...

微软正式推出适用于WSL Linux的D3D12 GPU视频加速技术

今天,微软正式向WindowsSubsystemforLinux(WSL)用户发布了Direct3D12GPU视频加速支持。在微软通过WSL允许在Linux下使用Open...

《怪物猎人:崛起》曙光系统报错“Fatal d3d error”的解决办法

《怪物猎人:崛起》曙光系统报错“Fatald3derror”的解决办法不少小伙伴反应《怪物猎人:崛起》DLC曙光预载以后打不开游戏,出现了Fatald3derror类似的错误代码,这类问题的解...

Mac+双屏,前端程序员的专业配置 - Loctek 乐歌 D3D 双屏电脑显示器支架

做FE也有一段日子了,电脑屏幕每天在设计稿、浏览器、IDE、即时通讯工具、Terminal、邮箱之间切换。虽然mac的工作区带来了很多灵活,但是依然略显不足。于是入手支架,把公司配的电脑和显示器发挥起...

RPC 的原理和简单使用(rpc详解)

RPC的概念RPC,RemoteProcedureCall,翻译成中文就是远程过程调用,是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数。在调用的...

大厂开源的golang微服务rpc框架 — kitex

提前rpc估计所有的开发同学都知道,不知道的也无所谓,毕竟我也好几年没用了,今天带大家在复习一下。RPC(RemoteProcedureCall):远程过程调用,...

干货!一文掌握Protobuf所有语言所有用法,快收藏

说实话,Protobuf这个库,让人相见时难别亦难,东风无力百花残,每次等到要用它的时候,总感觉还没有完全掌握它的用法,而实际上等去百度或者谷歌的时候,教程都是多么的凌乱不堪。学会它,最直接关系到的,...

取消回复欢迎 发表评论: