大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。
在上一期我们使用了Python自带的sqlite3模块建立了一个小型数据库,并且建立了一个家庭小药箱的数据表格。那么接下来我们就要接触到数据库最普遍使用的功能——增删改查了。
增删改查,顾名思义就是增加数据、删除数据、修改数据和查询数据。这四大操作是数据读写的基础。因为我们目前的数据表中还没有数据,我们先来了解如何增加数据。
增加数据需要使用的sql语句是这样的:
假设我们今天买了一盒2024年1月16号过期的布洛芬,每盒24粒,就可以编写这样的sql语句:
其中id字段因为我们设置为了自增,所以在添加时就不需要写id字段了。其他的设为NOT NULL的字段则必须设置,没设为NOT NULL的字段可以不设置,这样的话添加好数据后此字段的值为null。此外还需要注意在sql中值为字符串的一定要加上单引号。
我们还是使用cursor.execute来执行这个语句,并使用conn.commit来提交:
一条数据毕竟太少了,我们可以使用列表和字符串f前缀的方法快速提交多条数据:
而在sqlite3中,我们还可以使用executemany方法一次性提交多条数据。在sql中用问号占位,在executemany方法的第二个参数传入数据列表,就像这样:
现在我们有了一些数据了,可以随机选择一条幸运数据删除。而删除数据与增加数据的区别在于你需要指定删除哪些数据,所以这里边有一个筛选过程。需要使用到的sql语句是这样的:
其中WHERE引导的是条件表达式,它不光可以出现在删除语句中,还可以出现在修改和查询语句中。条件表达式和Python的结构差不多,但使用的符号不完全一样。我们这里选择根据id值来进行删除,假如我们要删除id为2的蒙脱石散,我们就可以写这样的sql语句:
然后execute,commit:
这样,这条数据就被删除了。
那改呢,其实相当于增和删的特点的结合,既需要选择指定的数据,也需要传递新的值。需要使用到的sql语句是这样的:
由此我们不难发现一些规律,WHERE引导的条件表达式总是放在主要操作的后边。中文描述这些过程通常是把哪个表里的某条数据删除或修改,但是在sql中不是这样的。一定要记住sql语句的顺序。
同时我们也第二次看到sql语句中出现了等号,第一次是实现条件表达式判断相等,而第二次是赋值。这在Python中是绝对错误的,而在sql中就自然而然,因为表达式的意义由引导关键字决定,在SET之后就是赋值,在WHERE之后就是比较。
这里假设我们的布洛芬吃完了,需要把run_out的值改为1,那么我们就可以这样写sql语句:
然后execute,commit:
这样数据就改好了。那么既然写好了这么多数据,我们现在就可以了解如何查询数据了。
查询数据需要的sql语句是这样的:
如果需要,我们还可以在表名后边接一个WHERE引导的条件表达式。而如果我们要选择所有字段的数据,我们可以把所有字段名改为一个星号。假如我们想要查询这个表的所有数据,我们就可以这样写:
查询数据有一个跟增删改很不一样的地方,就是它需要数据库向我们返回数据,所以我们需要将返回的数据存入变量并打印出来:
可是这样打印出来的是结果对象,展示所有结果内容的话我们还需要调用一下fetchall方法:
这样展示出来的每行数据都是字段值的元祖,看不出来字段值对应的是哪个字段。而字段信息可以通过访问cursor的description属性来获取,那么我们借助一下pandas就可以实现对表格数据的打印:
当我们学会了数据的增删改查之后,我们就可以实现大部分的数据库基础操作了。在此基础上我们也对我们的小药箱多了一份期待与设想。但现在这个小药箱数据库和普通的Excel表格其实没有多大区别,那么接下来我们要学习的技术将让它实现质的飞跃。如果这篇文章对你有所帮助,希望能帮室长点个赞和在看,你的鼓励是室长进步的动力!
领取专属 10元无门槛券
私享最新 技术干货