实际开发过程当中,数据的存储过程主要有三种:
1.将数据存储到内存当中
优点:使用方便,读写速度快 缺点:程序关闭的时候 内存释放 数据消失
2.将数据写到文件当中
优点:数据存储是永久性的,不易丢失 缺点:打开关闭文件 操作数据比较麻烦
3.将数据存储到数据库当中
优点:数据存储是永久性的,操作也比较方便 缺点:数据库学习难度比较大
数据库按照性质分为两大类:
1.关系型数据库,数据和数据之间存在这广泛的联系 mysql sqlite
优势:通过一个数据可以访问到其他的数据
![](/qrcode.jpg)
2.非关系型数据库,数据和数据之间没有关系 MongoDB redis
优势:数据为单独的,数据之间的耦合度比较低,对数据进行增删改不会影响其他数据
按照数据库规模大小来分 有四种:
1.大型数据库:oracle 一般用于大型商业公司 例如淘宝京东
2.中型数据库:SQLserver 使用非常广泛的数据库
3.小型数据库:mysql 一般用于小的产品公司或者公司内部数据库
4.微型数据库:sqlite 大小大概只有4M左右 经常用于移动端
python中用得是sqlite
一、连接和创建数据库:
1.引入sqlite3
# 引入sqlite3
import sqlite3
2.创建数据库和创建表:
语法:cursor.execute() 执行
create table if not exists 表名 (字段名 类型,字段名 类型,...)
# 连接到一个数据库 如果数据库存在则连接
# 如果不存在则创建
con = sqlite3.connect('myDb')
# # 设置数据库光标 光标是用来执行数据库命令的
cursor = con.cursor()
# execute执行 如果mtTable表不存在创建 mtTable表 (字段名)
cursor.execute('CREATE TABLE IF NOT EXISTS mtTable (name text,sex text,age int,height int)')
# commit提交
con.commit()
创建完成之后 文件下会有个这样的图标
找到 View按照下图方式点击database 可在编译器右边出现一个数据库的控制窗口,将创建的数据库拖进去即可查看数据库的信息
二、数据库的操作:增删改查
1. 增:要注意添加的内容要与数据库的字段名相对应,一次只能增加一条数据
cursor.execute('INSERT INTO mtTable (name,sex,age,height) VALUES ("jerry","男",20,150)')
# commit提交
con.commit()
2.删:删除name='jerry'的数据
cursor.execute('DELETE FROM mtTable WHERE name = "jerry"')
con.commit()
3.改:set 设置要改成什么, where后面是条件
cursor.execute('UPDATE mtTable SET name="jerry" WHERE name="tom"')
con.commit()
4.查:select * from 表名 where 条件
cursor.execute('SELECT * FROM mtTable')
# fetchall 找到所有的结果 返回值是个列表
result = cursor.fetchall()
# fetchone 找到结果的第一个结果 返回值是一个元组
result = cursor.fetchone()
# fetchmany 找到指定数量的结果
result = cursor.fetchmany(1)
print(result)
5.数据库模糊查询:
import sqlite3
con = sqlite3.connect('nameDB')
cursor = con.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS name_table(name text)')
con.commit()
cursor.execute('INSERT INTO name_table(name) VALUES ("王花")')
con.commit()
# cursor.execute('INSERT INTO name_table(name) VALUES ("张三")')
# con.commit()
X_表示找到以X开头的,后面只有一位的数据
_X表示找到以X结尾的,前面只有一位的数据
_ _多少位 就表示找到有几位数据
cursor.execute('SELECT * FROM name_table WHERE name LIKE "张_"')
结果为:
>>张三
%X 表示找到所有以X结束的数据
X% 表示找到所有以X开始的数据
%X% 表示找到所有包含 X 的数据
# cursor.execute('SELECT * FROM name_table WHERE name LIKE "王%"')
print(cursor.fetchall())
结果为:
>>['王花']
cursor.execute('SELECT * FROM name_table WHERE name LIKE "%花%"')
print(cursor.fetchall())
结果为:
>>['王花]'