Python内置数据库:轻量级SQLite

Python是一种流行的编程语言,可以用于开发各种应用程序,从图形用户界面到网站和游戏。Python的一个特点是,它内置了一个轻量级的关系型数据库SQLite,它可以提供快速、简单的数据存储和检索。本篇博客将介绍Python内置数据库SQLite的特点、用法和一些实用技巧,帮助读者更好地利用它来构建全面的应用程序。

1. 初识SQLite

SQLite是一个轻量级的数据库,它不需要单独的服务器进程,可以直接嵌入到Python程序中。Python内置了对SQLite的支持,内置库不需要安装,我们可以通过SQLite3模块来使用SQLite数据库。

SQLite数据库使用的.db文件是一种数据库文件,属于二进制文件类型。它是由SQLite引擎创建和管理的,用于存储和管理数据。SQLite数据库文件包含了表格、行和列等结构化数据,并提供了对这些数据的读取、写入和查询等功能。

SQLite数据库文件的特点如下:

  • 单个文件:SQLite数据库通常由单个.db文件组成,包含了所有的表格和数据,没有额外的配置文件或目录。
  • 压缩格式:SQLite数据库文件使用了一种专有的压缩格式,可以有效地压缩和存储大量的数据。
  • 跨平台可移植性:SQLite数据库文件可以在不同的操作系统上进行共享和使用,包括Windows、Linux、Mac等。
  • 零配置:创建和使用SQLite数据库文件通常不需要进行任何额外的配置或服务器设置,只需使用合适的库或工具即可。

由于SQLite数据库文件是二进制格式,并且具有一定的文件结构和格式,所以通常需要使用专门的SQLite数据库引擎或相关的工具才能正确地读取、写入和操作这些文件。

2.牛刀小试

import sqlite3

1. 连接到数据库
conn = sqlite3.connect('example.db')

1. 创建一个游标对象
cursor = conn.cursor()

1. 执行一个查询
cursor.execute('SELECT SQLITE_VERSION()')

1. 打印查询结果
data = cursor.fetchone()
print("SQLite version:", data)
1. SQLite version: ('3.40.1',)

1. 关闭连接
conn.close()

3. Sqlite的增删改查

以下是一个简单的SQLite使用示例:

import sqlite3

1. 连接到数据库
conn = sqlite3.connect('user.db')

1. 创建一个游标对象
cursor = conn.cursor()

1. 创建表格
1. 创建一个名为students的表,包含id、name和age三个字段
cursor.execute('''CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')
1. cursor.execute('''CREATE TABLE stocks
1.                   (date text, trans text, symbol text, qty real, price real)''')

1. 插入数据
1. 向students表中插入一条数据
cursor.execute("INSERT INTO students (name, age) VALUES ('张三', 20)")
1. cursor.execute("INSERT INTO stocks VALUES ('2022-10-28', 'BUY', 'GOOG', 100, 490.1)")

1. 保存更改
conn.commit()

1. 关闭连接
conn.close()

在上述例子中,我们新建了一张表,并且插入了一条数据,但是我们一般是打不开这个文件的,需要借助插件来查看数据文件;这个时候需要安装一个插件:

SQLite3 Editor

如下所示:

然后就可以预览刚才数据的操作:

建表完成之后就可以进行数据的增删改查。

(1) 查询数据

import sqlite3

1. 连接到数据库
conn = sqlite3.connect('user.db')

1. 创建一个游标对象
cursor = conn.cursor()

1. 查询users表中的所有数据
cursor.execute("SELECT * FROM students")
rows = cursor.fetchall()

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

1. 关闭连接
conn.close()
1. (1, '张三', 20)

(2) 更新数据

import sqlite3

1. 连接到数据库
conn = sqlite3.connect('user.db')

1. 创建一个游标对象
cursor = conn.cursor()

1. 更新users表中id为1的数据的name字段为'李四'
cursor.execute("UPDATE students SET name=? WHERE id=?", ('李四', 1))

1. 查询users表中的所有数据
cursor.execute("SELECT * FROM students")
rows = cursor.fetchall()

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

1. 关闭连接
conn.close()
1. (1, '李四', 20)

(3) 删除数据

import sqlite3

1. 连接到数据库
conn = sqlite3.connect('example.db')

1. 创建一个游标对象
cursor = conn.cursor()

1. 删除users表中id为1的数据
cursor.execute("DELETE FROM students WHERE id=?", (1,))

1. 提交更改并关闭连接
conn.commit()
conn.close()

(4) 提交事务

conn.commit()

(5) 关闭游标和连接

cursor.close()
conn.close()

总结

Python内置的SQLite数据库具有自包含、跨平台、无服务器和易于使用的特点,可以帮助开发人员快速创建和维护小型数据库应用。此外,Python语言自身也提供了丰富的模块和库,可以与SQLite无缝协作,非常方便。在此基础上,我们可以尝试更高级的数据库技术,如ORM(对象关系映射)、数据库迁移和分布式系统构建等。相信有了这篇博客的帮助,您对Python内置的SQLite会有更深入的了解并深受裨益。