用户权限管理、pymysql模块

一、用户管理(权限管理)

在MySQL中自带的mysql数据库中有4个表用于用户管理的

# 优先级从高到低
user > db > tables_priv > columns_priv
user #该表放行的权限,针对:所有数据,所有库下所有表,以及表下的所有字段
db #该表放行的权限,针对:某一数据库,该数据库下的所有表,以及表下的所有字段
tables_priv #该表放行的权限。针对:某一张表,以及该表下的所有字段
columns_priv #该表放行的权限,针对:某一个字段
# 1.创建用户      主机号是客户端的主机地址,% 代表任意一条主机
create user 用户名@"主机地址" identified by '密码';
eg:create user tom@'localhost' identified by '';

# 2.授权 []中为可选内容,with grant option 是给用户添加授权权限,all 代表所有除了grant以外的权限。若是用户名不存,则会先创建该用户名,再授权。
grant [权限名字:select、insert、update……、all] on 数据库名.表名 to 用户名@"主机地址" [with grant option];
      # 权限可以是授予数据库、表、某些字段的权限
eg: grant all on mydb.* to tom@'127.0.0.1'
grant all on mydb.teacher to tom@'127.0.0.1' with grant option

# 3.解除授权
revoke [权限名字:select、insert、delete……all] on 数据库名.表名 from 用户名@"主机地址";
eg:revoke select on mydb.* from tom@'127.0.0.1';

# 4.删除用户
drop user 用户名@"主机地址"

二、pymysql模块

pymysql模块用于Python程序与MySQL的连接

#安装
pip3 install pymysql

1、查询

# 1.连接数据库,创建连接,获得一个连接对象
conn = pymysql.Connect(
host='127.0.0.1', # 主机地址
user='root', # 用户名
password='hf19970124', # 密码
database='mydb', # 数据库名称
port=3306, # 端口号 可选
charset='utf8' # 编码 可选
) # 2.获取游标对象,游标封装的读和写的操作
cursor = conn.cursor(pymysql.cursors.DictCursor) # pymysql.cursors.DictCursor指定返回的结果为字典,不写默认为元组 # 3.查询语句
sql = "select * from teacher where name-'%s' and password = '%s'%('tom','123')" # 注意%s需要加引号,并且单引号、双引号的嵌套使用 # 4.执行sql语句,如果是查询,返回查询的条数
res = cursor.execute(sql)
print(res) # 5.获取查询的结果
print(cursor.fetchall())
# print(cursor.fetchone()) # 6.关闭连接
cursor.close()
conn.close()
2、fetchall、fetchone、fetchmany与scroll
fetchall、fetchone、fetchmany 用于获取查询结果
scroll 用于设置游标的位置
cursor.fetchall()   # 获取所有的结果
cursor.fetchone() #获取结果中的第一条数据,取出一天,游标的位置就往下移一个,下一次取从新位置开始
cursor.fetchmany(size) # 获取size条数据 # scroll 可用于设置游标的位置
cursor.scroll(1,mode='relative') # 相对位置,游标位置从当前位置后移一个,下一次取结果,从第二条数据开始
cursor.scroll(-1) # 默认为相对位置,游标位置从当前位置退一个
cursor.scroll(3,mode='absolute') # 绝对位置,游标位置从头开始移动3个
3、增、删、改数据
(1)在增删改数据的时候,执行完SQL语句,必须提交  conn.commint()
# 在增删改数据的时候,执行完SQL语句,必须提交,否则在数据库中的数据不会改变
import pymysql conn = pymysql.Connect(
host='127.0.0.1',
user='root',
password='hf19970124',
database='mydb',
port=3306,
charset='utf8'
) cursor = conn.cursor(pymysql.cursors.DictCursor) sql = 'insert into stu values(1,"ton"),(2 ,"jack")'
# sql = 'update stu set name="TOM" where id = 2'
# sql = 'delete from stu where name = "tom"' cursor.execute(sql) conn.commit() # 提交 cursor.close()
conn.close()

提交 conn.commit()

(2)修改数据时,如果发生错误,数据应该回到起始值,如果修改失败,就会抛出异常,可以对异常进行处理,只要抛出异常就将数据撤销  conn.rollback()

import pymysql
# 创建链接得到一个链接对象
conn = pymysql.Connect(
host="127.0.0.1", # 数据库服务器主机地址
user="root", # 用户名
password="admin", # 密码
database="day42", #数据库名称
port=3306, # 端口号 可选 整型
charset="utf8" # 编码 可选
)
# 获取游标对象 pymysql.cursors.DictCursor指定 返回的结果类型 为字典 默认是元祖类型
cursor = conn.cursor(pymysql.cursors.DictCursor) try:
cursor.execute("update moneyTable set money = money - 50 where name = '小明'")
#如果小花的账户出问题了 无法更新数据 那就需要回滚
cursor.execute("update moneyTable set money = money + 50 where name = '小花'")
conn.commit()
except:
conn.rollback() cursor.close()
conn.close()

撤销 conn.roback()

最新文章

  1. android_studio上传svn的时候那些不提交
  2. MvvmCross for WPF File Plugin
  3. hadoop2.2.0集群安装
  4. ORACLE SQL单行函数(三)【weber出品必属精品】
  5. Java中的各种o
  6. zoj 3665 Yukari's Birthday(枚举+二分)
  7. Mr. Frog’s Game
  8. Leetcode_36_Valid Sudoku
  9. C#通过COM组件操作IE浏览器(四):实用代码总结
  10. HBase 架构脑图
  11. oracle中查看所有表和字段以及表注释字段注释
  12. 转:ArcGIS API for JavaScript之图层
  13. python中itertools里的product和permutation
  14. 在CentOS6.8下安装Docker
  15. zookeeper【5】分布式锁
  16. Genymotion集成到Eclipse
  17. 1874 football game(三分法and method to compute the area of trianngle)
  18. JavaScript对象深复制
  19. EasyPlayer Android安卓RTSP服务器低延时再优化策略
  20. 从JavaScript到Python之异常

热门文章

  1. 201⑨湘潭邀请赛 Chika and Friendly Pairs(HDU6534)
  2. leetcode.矩阵.378有序矩阵中第K小的元素-Java
  3. python调用tushare获取沪深股通十大成交股
  4. Optparse 简介
  5. teb教程4
  6. mysql数据库用户权限设置
  7. JSON.parse 解析json字符串时,遇字符串换行符,解析失败
  8. 一篇不一样的Android屏幕适配具体做法(原创)
  9. 【sql】牛客网练习题 (共 61 题)
  10. Oracle数据库创建与连接