小白都能学会的新建数据库,无非就是这七招
数据库的基本操作,无非就是下面7招:
创建
读取
插入
更新
查询
排序
删除
我们先要引入sqlite3这个模块,这个模块是Python自带的,不需要安装(上一篇我写错了,好多好心的小伙伴提醒我,非常感谢纠正),然后创建数据库很简单,我们假设我们要把下面一个“工资单”表格数据存入数据库,如何操作呢,下面一步一步来操作,follow me !
![image](//upload-images.jianshu.io/upload_images/3256786-3bf3cdafc9612d28.png?imageMogr2/auto-orient/strip|imageView2/2/w/612/format/webp)
## 1.创建数据库
sqlite3.connect(database [,timeout ,other optional arguments])
**1).这个函数主要是打开一个到SQLite数据库文件的链接**
若成功返回一个对象,如果给定的数据库名称不存在,则该调用将创建一个数据库。如果我不想在当前目录中创建数据库,那么你可以指定一个路径即可.
**2).数据库好了,我们要建表**
数据库其实就是一个一个表,然后维护这些表之间的爱和情仇,如何建表呢,简单,用SQL语句建表,SQL语句还是很通俗易懂的:
![image](//upload-images.jianshu.io/upload_images/3256786-73df57eaa9d49586.png?imageMogr2/auto-orient/strip|imageView2/2/w/824/format/webp)
**首先创建一个table名字叫USERS,如果不存在就创建它:**
然后这个表有6列,每一个分别是:
ID#为主key,就是唯一标识表中某一条记录,不能重复,类似身份证
NAME#类型是TEXT,也就是字符串,是可变长度的字符串
AGE#类型是INT,也就是整型
SEX#类型是字符串,固定长度为10个字节,不管用不用都分配10个字节
CITY#类型是字符串,固定长度为30个字节,不管用不用都分配30个字节
SALARY#类型是浮点数
**接着插入数据:**
INSERT INTO USERS (ID,NAME,AGE,SEX,CITY,SALARY) VALUES(1,”Leo”,32,”Male”,”ShangHai”,12000)
也是一个SQL语句,和前面的key要对应,按顺序写入我们的表格内容
**然后提交commit:**
connection.commit()
辛苦写了半天,要提交当前的事务。如果忘记了,对不起那么你所做的任何动作对数据库连接来说是不可见的
**最后关闭数据库**
connection.close(),千万不要忘记关闭
![image](//upload-images.jianshu.io/upload_images/3256786-de04006bc75b88fa.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
## 2.读取数据库
创建好了数据库之后,我们要读一下,读数据就简单多了,我们用**SELECT语句**
*SQLite 的 SELECT 语句,可以方便从 SQLite 数据库表中获取数据,以结果表的形式返回数据。这些结果表也被称为结果集,然后我们打印出这个结果集里面的每一行数据.*
![image](//upload-images.jianshu.io/upload_images/3256786-22eea80293c2073a.png?imageMogr2/auto-orient/strip|imageView2/2/w/918/format/webp)
select * from USERS 查询表里面的所有数据,返回给一个游标cursor
循环打印出每一行的数据
## 3.插入数据库
如果我们要添加一行新的内容到数据库中怎么办,用INSERT语句
conn.execute(“INSERT INTO USERS (ID,NAME,AGE,SEX,CITY,SALARY) VALUES (10,”Lily”,30,”Female”,”GuangZhou”, 13000)”);
比如我们增加一个姑娘的工资到数据库中,就要依此把每一列的内容写入表中
切记:确保值的顺序与列在表中的顺序一致
![image](//upload-images.jianshu.io/upload_images/3256786-ef11b803a0026965.png?imageMogr2/auto-orient/strip|imageView2/2/w/1200/format/webp)
## 4.更新数据库
数据库经常要更新,比如ID=10 的Lily同学工资猛涨了,帮她更新一下数据库吧,我们用Update 语句.
conn.execute(“UPDATE USERS set SALARY =30000.00 WHERE ID=10”);
*SQLite 的 UPDATE 查询用于修改表中的记录,一般都是配合使用带有 WHERE 子句的 UPDATE 查询然后指定的那一行,这里我们是要更新ID=10,要不然你会把所有人的工资都更新了,那老板就哭了~~*
![image](//upload-images.jianshu.io/upload_images/3256786-fe0b56073802df9b.png?imageMogr2/auto-orient/strip|imageView2/2/w/1196/format/webp)
## 5.查询数据库
数据库搞好了,我们是要查询是必须呢,怎么查询呢,我们用Select 语句
跟前面的读数据有点类似,只是上面是全盘读取,我们这边是按照某一个条件读取.
比如我们要查表,年龄大于30岁,并且工资在10000以上的同学
cursor = conn.execute(“SELECT AGE,SALARY from USERS “
“WHERE AGE>30 and SALARY >=10000”)
用一个复合的逻辑判断一下就搞定了,是不是象英语一样表诉,SQL语言还是很简洁的
![image](//upload-images.jianshu.io/upload_images/3256786-2baecbe35fcfb7fa.png?imageMogr2/auto-orient/strip|imageView2/2/w/1144/format/webp)
## 6.排序数据库
数据库的排序也是经常要用的,我们要按照某一些规则来排序,比如按照工资排序,比如按照年龄排序,怎么排呢,用**ORDER BY语句**
*SQLite 里的 ORDER BY 子句是用来按照一个或多个列按升序或降序来排列*
比如按工资排序:
conn.execute(“SELECT id, name, CITY, salary from USERS ORDER BY salary DESC “)
![image](//upload-images.jianshu.io/upload_images/3256786-b58aa3693d2bfda0.png?imageMogr2/auto-orient/strip|imageView2/2/w/1180/format/webp)
>>
(10, u”Lily”, u”GuangZhou”, 30000.0)
(2, u”Jack”, u”BeiJing”, 15000.0)
(1, u”Leo”, u”ShangHai”, 12000.0)
(4, u”Martin”, u”NanJing”, 9500.0)
(3, u”Lulu”, u”ChengDu”, 8000.0)
## 7.删除数据库
上面说了6种,还差一种经常会用的操作,就是删除数据库里面的内容,前面一开始就就用了一招删除整个表,如果想删除一个表里面的一行怎么操作呢,用Delete语句
*SQLite 的 DELETE 查询用于删除表中已有的记录,一般也是用带有 WHERE 子句的 DELETE 查询来删除选定行,否则所有的记录都会被删除。*
比如我们删除ID=2同学的记录:
conn.execute(“DELETE from USERS where ID=2”)
切记要conn.commit()
![image](//upload-images.jianshu.io/upload_images/3256786-c14ea8e269691054.png?imageMogr2/auto-orient/strip|imageView2/2/w/936/format/webp)
结论:
好了,SQLite数据库的入门操作就讲道这里了,是不是很简单啊,其实很多复杂的东西都是一层一层抽丝剥茧的去理解,会轻松很多,如果大家对今天的内容有什么疑问,欢迎留言一起讨论,
推荐一下我建的python学习交流扣扣qun:850973621,群里有免费的视频教程,开发工具、
电子书籍、项目源码分享。一起交流学习,一起进步!
![QQ截图20201205144328.png](https://upload-images.jianshu.io/upload_images/25205170-933953ee6a8e09f1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![QQ截图20201210135017.png](https://upload-images.jianshu.io/upload_images/25205170-79f3bcfd4fdcdc59.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![QQ截图20201210135040.png](https://upload-images.jianshu.io/upload_images/25205170-3fae929ec354862a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
作者:菜鸟学python
链接:https://www.jianshu.com/p/643295e217b6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。