Python 进阶(五):数据库操作之 SQLite

简介: Python数据库操作之 SQLite

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,弹出如下窗口:
image.png

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

相关文章
|
5天前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
64 7
|
29天前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
1月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
185 0
|
5月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
568 77
|
6月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
358 14
|
7月前
|
数据库 Python
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
7月前
|
SQL 关系型数据库 数据库连接
|
10月前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
1027 15
|
关系型数据库 数据库 Python
Python连接DB2数据库
Python连接DB2数据库
255 0
|
SQL 关系型数据库 MySQL
用 Python 连接数据库并进行查询。
【2月更文挑战第12天】【2月更文挑战第32篇】用 Python 连接数据库并进行查询。
188 0

推荐镜像

更多