14. Python 与数据库那点事儿,滚雪球学 Python

梦想橡皮擦 等级 524 0 0

本篇文章将给大家介绍 Python 如何操作 SQLite 数据库,本文将是滚雪球学 Python 第一阶段的倒数第二篇文章。

14. Python 与数据库那点事儿,滚雪球学 Python

缓解一下视疲劳

十四、Python 操作 SQLite 数据库

14.1 认识 SQLite 数据库

SQLite 数据库在安装 Python 之后会自动安装到你的电脑上,通过它可以将数据持久的存储在本地电脑中,有人肯定说了,我们可以将数据存储到文件中啊,为啥要存储到数据库中呢?这个吧,肯定是用着舒服啊(说了跟没说一样)。说真的很多时候不用问为什么的,先上手,后面在补充这些概念类的东西,用数据库在某些场景下是比用文件好的,当然只是在某些场景。

在 Python 中通过 import sqlite3 导入模块。

14.1.1 SQLite 基本使用

数据库一般分为以下三步。

  1. 连接数据库
  2. 操作数据库
  3. 关闭数据库

使用如下命令可以连接数据库。

conn = sqlite3.connect("数据库名称")

该方式如果数据库存在,自动建立连接,如果不存在,先创建数据库再建立连接关系。使用完毕记得及时关闭数据库。

conn.close()

上述代码中的 conn 就是一个普通的变量,一般叫做数据库连接对象,记住也是一个对象,它肯定有属性,也有方法。

请运行下述代码,在本地目录查看是否多出了一个文件。

import sqlite3

conn = sqlite3.connect("my_data.db")

conn.close()

14.1.2 建立 SQLite 数据库表

通过 connect 方法可以与数据库文件建立连接,返回的对象是 connect 对象,这个对象常用的方法如下。

  • close 关闭数据库连接;
  • commit 更新数据库内容;
  • cursor 建立 cursor 对象,该对象可以执行 execute 方法;
  • execute 执行 SQL 数据库命令,例如数据表建立,查询,删除,更新。

SQLite 数据类型 在正式学习 SQLite 数据库操作之前,需要先学习一下该数据库中包含的几种数据类型,因为 SQLite 比较简单,所以涉及的数据类型内容也不多。

  • NULL 空值;
  • INTEGER 整数;
  • REAL 浮点数;
  • TEXT 字符串;
  • BLOB 富文本数据,例如图片、歌曲。

有了上述内容之后就可以开始操作数据库了。在这之前还要补充一个概念,一个数据库可以包含多张表,翻译成通俗的话就是,一个 my_data.db 文件中可以包含多个表。

my_data.db 文件中建立第一张表。

import sqlite3

# 连接到 my_data.db 数据库
conn = sqlite3.connect("my_data.db")

# 建立 cursor 对象
cursor = conn.cursor()
# 建表 SQL 语句
sql = """
create table students(
id int,
name text,
sex text,
age int
)
"""
# 执行 sql 语句
cursor.execute(sql)
# 关闭 cursor 对象
cursor.close()
# 关闭数据库连接
conn.close()

相关注释已经添加到代码中,注意 conn 对象与 cursor 对象,使用之后都需要关闭,并且 cursor 对象在 conn 对象之前关闭。

create table students(
id int,
name text,
sex text,
age int
)

该内容是一个建表 SQL 语句,其中 create table 表名称(字段列表),每个字段定义都是按照 字段名 字段类型 格式设计的。通过该 SQL 语句就可以在数据库中建立一个 students 表,表中包含 4 列内容,分别是 idnamesexage。这里你可以将表看成一个类似表格的东西。 |id |name |sex| age | |--|--|--|--|

已经创建 students 表之后,就不可以在创建相同表名的表了。也就是在执行上述代码会报错,这时你就可以用到 try ... except 语句了。

import sqlite3

# 连接到 my_data.db 数据库
conn = sqlite3.connect("my_data.db")

# 建立 cursor 对象
cursor = conn.cursor()
# 建表 SQL 语句
sql = """
create table students(
id int,
name text,
sex text,
age int
)
"""
try:
    # 执行 sql 语句
    cursor.execute(sql)
except:
    print("数据库已经存在该表")
# 关闭 cursor 对象
cursor.close()
# 关闭数据库连接
conn.close()

14.1.3 表中增加数据

在数据库中建立表之后就可以增加数据了,表中的数据一般称为记录,接下来使用插入数据的命令向表中增加一条学生数据。

import sqlite3

# 连接到 my_data.db 数据库
conn = sqlite3.connect("my_data.db")

# 建立 cursor 对象
cursor = conn.cursor()
# 表中插入数据的SQL
insert_sql = """
insert into students values(?,?,?,?)
"""
try:
    # 待插入的数据
    data = (1,"橡皮擦","女",18)
    # 执行 sql 语句
    cursor.execute(insert_sql,data)
    # 更新数据库内容,在插入数据、删除数据、更新数据的时候不要忘记该命令
    conn.commit()
except Exception as e:
    print("插入异常",e)
# 关闭 cursor 对象
cursor.close()
# 关闭数据库连接
conn.close()

上述代码最核心的为 insert into students values(?,?,?,?) ,该内容也是 SQL 语句,执行该语句使用 execute 方法时,需要在该方法的第二个参数位置传入对应的数据,也就是说如果 SQL 语句中有三个问号,这里的第二个参数也应该是三个元素的元组。

14.1.4 查询数据库中的表数据

查询语句的 SQL 格式为:

select * from 表名

查询 students 表中的数据代码如下:

import sqlite3

# 连接到 my_data.db 数据库
conn = sqlite3.connect("my_data.db")

# 建立 cursor 对象
cursor = conn.cursor()
# 查询语句 SQL
select_sql = """
select * from students
"""
try:

    # 执行 sql 语句
    results = cursor.execute(select_sql)
    print(results)
    for record in results:
        print(record)
except Exception as e:
    print("查询异常", e)
# 关闭 cursor 对象
cursor.close()
# 关闭数据库连接
conn.close()

使用上述代码即可将数据库中指定表的数据全部读取出来。还有当我们执行 results = cursor.execute(select_sql) 之后,输出的 results 对象类型为 <sqlite3.Cursor object at 0x00000000020DCB90>,该对象存在一个 fetchall 方法,使用该方法可以一次性将所有数据都存放到一个元组内。

还有一个需要说明,如果只想要某个数据表中的某一列,不想要全部数据,使用的 SQL 语句语法格式为:

select 列名,列名 from 表名

14.1.5 更新表数据

更新数据表中的数据用到的关键词是 update,语法格式如下:

update 表 set 列名 = 新值,列名=新值...
where 条件

这里的 SQL 语法格式变的相对复杂了一些,主要增加了 where 条件判断,先完成以下代码内容。

import sqlite3

# 连接到 my_data.db 数据库
conn = sqlite3.connect("my_data.db")

# 建立 cursor 对象
cursor = conn.cursor()
# 修改语句 SQL
update_sql = """
update students set name = "大橡皮擦" ,age=20
where id = 1
"""
try:

    # 执行 sql 语句
    cursor.execute(update_sql)
    conn.commit()
except Exception as e:
    print("更新异常", e)
# 关闭 cursor 对象
cursor.close()
# 关闭数据库连接
conn.close()

执行更新操作,将 橡皮擦 更新为了 大橡皮擦,可以使用查询语句查看一下表中的数据是否得到修改。

Python 操作数据库重点其实是 SQL 语句的熟练程度,本篇博客中涉及的 SQL 语句只是冰山一角,对于 SQL 语句其实是存在专业的语法结构的,在后续再次滚雪球的时候,将为你展开说明。

在更新表中列数据的时候,第一个要注意一定要增加 where 条件,否则话整个表就都被更新了;第二个一定要确定好列名,否则找不到列名也会报错的哦。

14.1.6 删除表数据

学习了插入与更新之后,删除表数据就变得简单多了,记住 SQL 的语法格式就可以:

delete from 表名
where 条件

当 where 条件满足的时候,就会删除对应的数据,一定要注意如果没有写 where 条件,整个表就被删除了。

`如果你不想删库跑路,那记住一点,当对数据库中任意表执行更新或者删除操作的时候,一定都要写上 where 条件`

14.2 这篇博客的总结

本篇博客如果是第一次学习 Python 的朋友打开,其实难度很大,因为里面涉及了另一个语言体系叫做 SQL 语言,一种对数据库进行操作的语法,学习该语法之后其实对很多数据库都可以进行简单的操作了,尴尬的是如果你第一次学习,你需要一边看 Python 语法,一边看 SQL 语法,很容易两个都学起来迷糊,不过不要担心,毕竟这只是第一遍滚雪球,相信第二次再来你会更加有自信的。

🈚🈚🈚🈚🈚


博主 ID:梦想橡皮擦,希望大家点赞评论收藏

收藏
评论区

相关推荐

1. 这才是 Python 学习的正确起手姿势,滚雪球学 Python
在博客上,我写了很多关于 Python 的文章,很多朋友可能觉得橡皮擦应该是一个 Python 开发人员或者一个技术开发人员,但很遗憾的告诉大家,橡皮擦恰好是很多公司中开发人员的对立面【产品经理】。但我是一个相当懂技术人的产品经理。 一、Python 初次接触,Python 变量与基本运算 1.1 滚雪球学 Python 课程前置导语 从本篇博
4. 列表一学完,Python 会一半,滚雪球学 Python
滚雪球学 Python,目标就是让 Python 学起来之后,越滚越大。 四、列表一学完,Python 会一半 4.1 列表是个啥 列表,先记住英文为 list ,它是 Python 中一种可以动态添加删除内容的数据类型,由一系列的元素组成。直白点说列表是将多个变量组合在一起的那么一个容器。 很多文章会找一个与列表相似的编程概念,一般会说 P
11. 用别人写好的代码,完成我的工作,剩下的时间去摸鱼
今天是持续写作的第 <font color"red"11</font / 100 天。 如果你有想要交流的想法、技术,欢迎在评论区留言。 Python 为何那么多人都喜欢,就是因为很多大佬给我们造好了“轮子”了,拿着大佬的轮子,我骄傲 十一、Python 模块的设计与应用 模块是一个概念,它包含 1N 个文件,如果文件是 Python 代码
12. 数据放在本地,心里才更踏实,滚雪球学 Python
今天是持续写作的第 <font color"red"12</font / 100 天。 如果你有想要交流的想法、技术,欢迎在评论区留言。 本篇文章要讲解的内容是 Python 文件操作的相关内容,滚雪球学 Python 第一遍已经进行到中途,是否还能坚持住呢?加油。 十二、Python 文件读取与写入 电脑文件的操作是任何一门编程语言都会涉
13. 如果自己写的 Python 程序出错了,怎么办?
本篇文章主要内容为程序错误与异常处理,顺带会说一下内置模块 logging 。 <center<font colorred缓解一下视疲劳</font</center 13. 如果自己写的 Python 程序出错了,怎么办?(https://imghelloworld.osscnbeijing.aliyuncs.com/ee1f42d25d
14. Python 与数据库那点事儿,滚雪球学 Python
本篇文章将给大家介绍 Python 如何操作 SQLite 数据库,本文将是滚雪球学 Python 第一阶段的倒数第二篇文章。 <center<font color
15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工
本篇文章将给大家介绍 Python 多线程与多进程相关知识,学习完该知识点之后,你的 Python 程序将进入另一个高峰。 <center<font colorred缓解一下视疲劳</font</center 15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工(https://imghelloworld.oss
原来Python绘图也可以这么漂亮,这次真的是学习到了!
(https://imghelloworld.osscnbeijing.aliyuncs.com/8830803f033eeed85783e9058cf08968.png) 作者:朱小五 来源:快学Python 👆人生苦短,快学Python! 最近看了一篇文章《一个牛逼的Python 可视化库:PyG2Plot》,可惜只是简单介
Python SQLite 基本操作和经验技巧(一)
1.插入单行数据 python import sqlite3 con sqlite3.connect('xxxx/test.db') cur con.cursor() 创建游标对象 cur.execute("create table Student(SNO char(10) UNIQUE primary key,Sname char(20),Sse
Python开发 常见异常和解决办法
1.sqlalchemy创建外键关系报错property of that name exists on mapperSQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对象关系映射(ORM)工具,使得在Python中操作MySQL更加简单。在给两个表创建外键关系时可能会报错:bashsqlalchemy.exc.Arg
1年前的小五都用 Python 来做什么?
↑ 点击上方 “凹凸数据” 关注 + 星标  每天更新,干货不断   (多图预警) 注:这是小五一年前在知乎的回答,当时还只有凹凸数读一个公众号,所以很多图片都会带有数读或者知乎的水印。 作为一个菜鸟数据分析师,只会sql+python业余时间写写文章:用python爬取数据→数据清洗→数据分析→数据可视化词云镇楼20190730回来看,前面
为啥要学Python?
为啥要学Python?如果我跟你说你现在用一天拉出来的财务统计表,学了Python之后能用1个小时就搞定,你学不学?如果你花了8个小时扒的竞品投放数据,学了Python之后能用30min搞定,你学不学?你总羡慕你的同事能6点下班,陪女朋友蹦迪夜生活丰富,你却在满脸油头的爆肝加班,学了Python之后,你也能这样,你学不学?如果我跟你说,学会了Python能增
Python初学者必备书籍《Python入门经典》高清PDF版|百度网盘免费下载|Python初学者,自学Python必读
提取码:1028以及前文提到的学习路线图内容简介Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python可以用于很多的领域,从科学计算到游戏开发。《Python入门经典》是面向Python初学者的学习指南,详细介绍了Python编程基础,以及一些高级概念,如面向对象编程。全书分为24章。第1章介绍了Python的背景和安装方法。第2章
全网最全python学习路线图,让学习不迷路
学习Python有一段时间了,最近也是在不断的整理Python相关的基础知识和学习一些新的知识,想来分享给大家。我刚开始接触Python时,和大多数初学者一样不知道从那里开始学习python,我也在网上找了许多python相关的资料来学习,但是资料多也不见得就好,因为不知道从哪里开始下手,走了许多弯路。后面我就整理了一套对初学者来说学习python能很快上手
玩转python爬虫
&ensp;&ensp;&ensp;  近几年来,python的热度一直特别火!大学期间,也进行了一番深入学习,毕业后也曾试图把python作为自己的职业方向,虽然没有如愿成为一名python工程师,但掌握了python,也让我现如今的工作开展和职业发展更加得心应手。这篇文章主要与大家分享一下自己在python爬虫方面的收获与见解。 &ensp;&ensp;