数据库编程
使用模块
pymysql
操作数据库过程
- 连接数据库
- 获取游标
- 执行SQL操作
- 关闭游标
- 关闭数据连接
连接数据库方式
- connect
- Connect
- Connection
connect = Connection =Connect
连接数据库参数
- host 主机
- port 端口
- database 数据库名
- user 用户
- password 密码
- charset 字符集
基本操作方法
数据库对象
获取游标
cursor()
提交数据
commit()
撤销操作
rollback()
关闭连接
close()
游标对象
执行SQL语句
execute()
获取一条查询 结果
fetchone()
获取指定条数查询结果
fetchmany(n)
获取所有查询 结果
fetchall()
关闭游标
close()
SQL注入
- 是指在连接SQL语句时,用户传入了非法的数据,使SQL语句的意义发生变化,导至数据泄露
- 防止SQL注入的方法可以使用 参数化来避免
数据库其它操作
视图
- 视图是一种基于查询结果产生的虚拟表。
- 视图是一条被封装起来的SQL查询语句
- 视图不存储数据
- 视图的基本表发生变化,视图也会随之变化
定义视图
createview 视图名称 asselect语句;
查看视图
show tables;
使用视图
select 字段名 from 视图名;
删除视图
drop view 视图名;
事务
Transaction,是指作为一个基本工作单元执行的一系列SQL语句的操作,要么完全地执行,要么完全地都不执行。
事务的ACID特性
1.原子性(Atomicity)
一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,不可能只执行其中的一部分操作
2.一致性(Consistency)
数据库总是从一个一致性的状态转换到另一个一致性的状态。
3.隔离性(Isolation)
通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。
4.持久性(Durability)
一旦事务提交,则其所做的修改会永久保存到数据库。(此时即使系统崩溃,修改的数据也不会丢失。)
开启事务
begin;
start transaction;
提交事务
commit;
回滚事务
rollback;
索引
能够快速查询数据的线索就称之为索引。
索引的目的
提高查询效率
索引只适合查询操作频繁的表。
建立索引
create index 索引名称 on 表名(字段名称(长度));
如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致
字段类型如果不是字符串,可以不填写长度部分
查看索引
show index from 表名;
删除索引
dropindex 索引名称on 表名;
用户管理
为数据库添加删除用户,或为用户添加删除权限
创建用户,授权
grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';
常用权限: create、alter、drop、insert、update、delete、select
全部权限: allprivileges
查看权限
show grants for 用户名@主机地址;
修改权限
grant 权限名称 on 数据库 to 账户@主机 with grant option;
flushprivileges;
修改密码:
update user set authentication_string = password(‘密码’) where user = ‘用户名’;
flush privileges;
删除用户
dropuser 用户名@主机地址;
主从配置
- 提供服务可用性
- 通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。
- 提高数据安全,因为数据已复制到从服务器,从服务器可以终止复制进程,所以,可以在从服务器上备份而不破坏主服务器相应数据
- 通过主从服务器,实现读写分离,负载均衡