Python连接SQLite数据库完整指南:内存与硬盘模式及CRUD操作
本文详解Python中sqlite3模块的使用,涵盖建立内存与硬盘数据库的区别、表结构创建、数据插入、查询及删除操作。通过具体代码示例,演示如何连接数据库、使用游标执行SQL语句、提交事务及关闭连接,帮助开发者快速掌握轻量级数据库的基础操作。
1. 建立与SQLite数据库的连接
SQLite是Python内置的开源关系型轻量级数据库,支持基于内存或硬盘存储。由于无需额外下载安装数据库软件或驱动程序,Python可通过内置模块直接调用,其模块路径通常位于Python安装目录下的Lib/sqlite3/中。
对关系型数据库进行读写操作,通常需遵循以下标准流程:
- 第一步,建立应用系统与数据库的连接;
- 第二步,创建数据库实例,即生成一个用于存储数据的文件;
- 第三步,定义并建立相应的表结构;
- 第四步,向表中写入记录或读取已有记录;
- 第五步,操作完成后关闭数据库连接。
1.1 建立基于内存的数据库
import sqlite3 #导入sqlite3模块
conn = sqlite3.connect(":memory:") #建立一个基于内存的数据库
conn.close() #关闭与数据库的连接
建议在完成数据库操作后及时关闭连接,以避免因连接数过多而消耗内存资源。
1.2 建立基于硬盘的数据库
import sqlite3 #导入sqlite3模块
conn = sqlite3.connect("First.db") #建立一个基于硬盘的数据库实例
conn.close() #关闭与数据库的连接
效果:
执行上述代码后,Python安装路径下会生成名为First.db的数据库文件。

1.3 基于内存和基于硬盘的区别
基于内存的数据库在关机或突发事故时容易丢失数据,而基于硬盘的数据可持久保存。内存数据库读写速度较快,但存储容量受可用内存限制;硬盘数据库读写速度相对较慢,但存储容量取决于硬盘剩余空间。
2. 在指定数据库里建立表结构
在关系型数据库中,必须创建具有关系特征的表结构,才能向表中写入数据并执行数据库操作。
将以下二维结构化记录表依次存入数据库表中。

创建对应的数据库表需定义钓鱼日期、名称、数量、价格、备注五个字段。各字段值需确定数据类型:数量为整数,价格为浮点数,钓鱼日期、名称、备注为字符型。
2.1 建立数据库表结构
import sqlite3 #导入sqlite3模块
conn = sqlite3.connect("First.db") #建立一个基于硬盘的数据库实例
cur = conn.cursor() #通过建立数据库游标对象,准备读写操作
cur.execute("Create table T_fish(date text,name text,nums int,price real,Explain text)") #根据上表结构建立对应的表结构对象
cur.execute("insert into T_fish Values('2018-3-28','黑鱼',10,28.3,'tom')") #插入一行记录结果信息
conn.commit() #保存提交,确保数据保存成功
conn.close() #关闭与数据库的连接
在First.db数据库中创建T_fish表,插入一行记录,提交保存并关闭数据库连接。
- 建立数据库表采用标准SQL命令方法,在数据库中创建对应的T_fish表。
- 插入一行记录,通过游标的execute()方法,利用SQL的insert命令向T_fish表执行一条插入语句;可连续多次调用execute()方法以执行多条SQL语句。
- 提交保存,在对数据库进行写操作时,最后必须调用Connection对象的commit()方法,才能将数据真正提交到数据库中,否则可能导致数据丢失。
游标用于指向特定数据库的某张表,只有建立了确定的表指向关系,才能进行插入、修改、删除、查找等操作。
2.2 查找数据
import sqlite3
conn = sqlite3.connect("First.db") #连接数据库
cur = conn.cursor() #创建关联数据库的游标实例
cur.execute("select * from T_fish") #对T_fish表执行数据查找命令
for row in cur.fetchall(): #以一条记录为元组单位返回结果给row
print(row)
conn.close() #关闭数据库
效果:

2.3 删除数据
import sqlite3
conn = sqlite3.connect("First.db") #连接数据库
cur = conn.cursor() #创建游标实例
cur.execute("insert into T_fish Values('2018-3-29','鲤鱼',17,10.3,'john')") #插入一条数据
cur.execute("insert into T_fish Values('2018-3-30','鲢鱼',9,9.2,'tim')")
conn.commit() #提交数据保存到磁盘
cur.execute("select * from T_fish") #查找表里的记录
for row in cur.fetchall():
print(row)
cur.execute("delete from T_fish where nums=10") #删除数量为10的记录
conn.commit() #提交结果到硬盘
print('=='*50)
cur.execute("select * from T_fish") #查找T_fish表里的记录
for row in cur.fetchall():
print(row)
conn.close()
效果:

总结
本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注本站的更多内容!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













