SQLite3进行数据库各项常用操作

打印 上一主题 下一主题

主题 549|帖子 549|积分 1647

前言

本文是通过轻量化数据库管理工具SQLite进行的根本操作和一些功能实现。
1、SQLite先容

SQLite是一个广泛使用的嵌入式SQL数据库引擎,以其高可靠性、全功能集、独立性、简单性、易配置和良好的文档而著名。SQLite通常被用于那些不必要复杂服务器数据库系统的场所,比如移动应用、桌面应用以及只必要单用户访问数据库的场所。
SQLite的特点主要包罗:


  • 轻量级数据库:SQLite是一个轻量级的数据库库,不是一个完整的数据库系统。它被设计为无需配置、无需服务器的嵌入式SQL数据库引擎。
  • 单一文件:SQLite数据库存储在一个单一的磁盘文件中,便于携带、复制和共享。
  • 本地存储:常用于装备或应用程序中嵌入式数据库存储需求,如手机应用程序、游戏、个人工具等。
  • 不必要独立的服务器过程:SQLite在应用程序进程中运行,不必要配置和管理数据库服务器。
  • 用途:适用于轻量级应用、原型开发、教育、小型应用程序等,以及必要简单数据存储但不必要高并发和高性能的场景。

2、通过SQLite创建一个数据库文件

通过代码创建一个数据库文件,我们假设要创建的数据库文件是"mhdata.db"。
如果文件不存在,会自动在当前目录创建。
   如果文件已经存在,则会报错提示:
sqlite3.OperationalError: table user already exists
  代码表现如下:
  1. import sqlite3
  2. # 连接到SQLite数据库
  3. conn = sqlite3.connect('mhdata.db')
  4. # 创建一个Cursor:
  5. cursor = conn.cursor()
  6. # 执行一条SQL语句,创建user表:                    
  7. cursor.execute('create table user (id int(10)  primary key, name varchar(20))')
  8. # 关闭游标
  9. cursor.close()
  10. # 提交事务:
  11. conn.commit()
  12. # 关闭Connection:
  13. conn.close()
复制代码

我们通过Navicate Preminm打开就可以看到生成了一个名字为mhdata的表,且有两列,对应的标题分别为id和name,下面的内容为空(因为此时只创建了表和标题,自然是没有内容的)。
3、往数据库文件中插入数据

我们继续使用SQLite往刚才的mhdata.db文件中插入数据,代码如下:
  1. import sqlite3
  2. # 如果文件不存在,会自动在当前目录创建:
  3. conn = sqlite3.connect('mhdata.db')
  4. # 创建一个Cursor:
  5. cursor = conn.cursor()
  6. # 首先,创建一个名为user的表,如果表已存在,SQL语句不会有任何效果
  7. cursor.execute('''CREATE TABLE IF NOT EXISTS user
  8.                   (id TEXT PRIMARY KEY, name TEXT)''')
  9. # 继续执行一条SQL语句,插入一条记录:
  10. cursor.execute('insert into user (id, name) values ("1", "语文")')
  11. cursor.execute('insert into user (id, name) values ("2", "数学")')
  12. cursor.execute('insert into user (id, name) values ("3", "英语")')
  13. cursor.execute('insert into user (id, name) values ("4", "物理")')
  14. cursor.execute('insert into user (id, name) values ("5", "化学")')
  15. # 关闭游标
  16. cursor.close()
  17. # 提交事务:
  18. conn.commit()
  19. # 关闭Connection:
  20. conn.close()
复制代码
执行代码后,就在mhdata.db表格中插入了5条数据。
我们将mhdata.db表格中数据可视化展示如下:

   注: 关于cursor.execute(‘’‘CREATE TABLE IF NOT EXISTS user (id TEXT PRIMARY KEY, name TEXT)’‘’)的含义解释:
  

  • CREATE TABLE IF NOT EXISTS: 这是SQL下令的一部门,用来创建一个新的表。IF NOT EXISTS是一个条件子句,它确保下令只在名为user的表不存在时执行。如果表已经存在,SQL操作将不会做任何事变,以此避免覆盖或报错。
  • user: 这是要创建的表的名称。
  • (id TEXT PRIMARY KEY, name TEXT): 这是定义表的结构的部门。在这个括号内,我们定义了表中的列及其数据类型:
  • id TEXT: 这指创建一个名为id的列,用来存储文本类型的数据。
  • PRIMARY KEY: 这个关键词指定id列是表的主键,意味着这个列的值必须唯一,不能重复。主键通常用来唯一地辨认表中的每一行记录。
  • name TEXT: 这指创建另一个名为name的列,同样用来存储文本数据。
  • 综上,这条SQL语句的作用是确保在数据库中存在一个名为user的表,其中包罗id(主键)和name这两个文本类型的列,从而后续的插入操作能够正常执行。
4、数据库文件信息查询

这里我们查询下刚才生成的mhdata.db文件,注意要让查询的mhdata.db文件和我们的.py在同一个目录下面,大概是指定查询目录。
可以执行查询的代码如下:
  1. import sqlite3
  2. # 连接到SQLite数据库,数据库文件是mhdata.db
  3. # 可以在这里修改路径
  4. conn = sqlite3.connect('mhdata.db')
  5. # 创建一个Cursor:
  6. cursor = conn.cursor()
  7. # 执行查询语句:
  8. cursor.execute('select * from user')
  9. # 获取查询结果:
  10. result1 = cursor.fetchall()
  11. print(result1)
  12. # 关闭游标
  13. cursor.close()
  14. # 关闭Connection:
  15. conn.close()
复制代码
我们查看下执行后的结果:
  1. [('1', '语文'), ('2', '数学'), ('3', '英语'), ('4', '物理'), ('5', '化学')]
复制代码
我们联合上面第三节的表现可以看出两者的结果保持一致。
5、修改数据库中的内容

我们修改上面mhdata.db中的某一条数据内容,如将(“1”,“语文”)改成(“1”,“生物”),那么执行代码如下:
  1. import sqlite3
  2. # 连接到SQLite数据库,数据库文件是mhdata.db
  3. conn = sqlite3.connect("mhdata.db")
  4. # 创建一个Cursor:
  5. cursor = conn.cursor()
  6. cursor.execute('update user set name = ? where id = ?',('生物',1))
  7. cursor.execute('select * from user')
  8. result = cursor.fetchall()
  9. print(result)
  10. # 关闭游标
  11. cursor.close()
  12. # 提交事务
  13. conn.commit()
  14. # 关闭Connection:
  15. conn.close()
复制代码
执行后的结果展示为:
  1. [('1', '生物'), ('2', '数学'), ('3', '英语'), ('4', '物理'), ('5', '化学')]
复制代码
由此可见达到我们要修改其中某一条数据的目的,如果想一次修改多条数据,可以参照( 3、往数据库文件中插入数据),直接多次执行cursor.execute()语句即可。
6、删除数据库中的内容

经过刚才的修改操作,如今我们删除数据库文件中的(“1”,“生物”),执行代码如下:
  1. import sqlite3
  2. # 连接到SQLite数据库,数据库文件是 mhdata.db
  3. conn = sqlite3.connect("mhdata.db")
  4. # 创建一个Cursor:
  5. cursor = conn.cursor()
  6. cursor.execute('delete from user where id = ?',(1,))
  7. cursor.execute('select * from user')
  8. result = cursor.fetchall()
  9. print(result)
  10. # 关闭游标
  11. cursor.close()
  12. # 提交事务
  13. conn.commit()
  14. # 关闭Connection:
  15. conn.close()
复制代码
执行后的结果展示:
  1. [('2', '数学'), ('3', '英语'), ('4', '物理'), ('5', '化学')]
复制代码
到这里,基本完成了用SQLite3进行数据库的基本操作,包罗:数据库文件的建立,数据插入、数据查询、数据修改和数据删除的基本操作。
博主还将另外一个基于本篇博客的升级版发布如下:一个程序解决SQLite常见的各项操作

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

滴水恩情

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表