MySql入门学习 DAY42(正则表达式匹配 mysql用户管理 pymysql模块 )

MySql入门学习(数据库mysql)

DAY42

今日内容:

正表达式匹配

mysql用户管理

pymysql模块  

正则表达式匹配

用到 regexp 关键字

select *from table where name regexp "正则表达式";

mysql用户管理

mysql用户指的是操作前指定的账号和密码,这个账号就是mysql的用户

为什么要管理用户:因为需要给用户设置权限问题

如何管理用户

1. 创建账号:

语法:create user 用户名@"ip地址"  identified by "密码";

create user  scote@"127.0.0.1" identified by "123";
此处的主机地址 不是服务器地址 而是表示 这个账户可以在那台电脑上登录

2. 授权:

语法: grant [权限的名称 select insert.... | all ] on 数据库.表名  to 用户名@主机地址;

with grant option 语句可以使 用户将他有的权限授予别的账户

授权语句执行时如果账号不存在会自动创建账号

注意:默认只有root才能为其他账号授权

例:

grant all on *.* to tom@"localhost" identified by "123";
*.* 表示该用户可以操作任何数据库 任何表 存储在user表

grant all on db.* to tom@"localhost" ;
db.* 该用户可以操作db数据库的任何表 存储在 db表

grant all on db.t1 to tom@"localhost";
db.* 该用户可以操作db数据库的t1表 存储在 table_privi表

精确到字段 和  操作级别
grant select(id) on db.t1 to tom@"localhost" ;
该用户只能查询 db下的t1表 的id

权限优先级:

user  ->  db  ->  table_priv  ->  columns_priv

收回权限

语法:revoke 权限的名称 on 数据库.表名  from 用户名@"主机名" ;

例:revoke all on *.* from scote@"localhost";

删除用户

drop   user  用户名@"主机地址" ;

刷新权限表

flush privileges;

pymysql模块  

python 中pymysql模块  的使用

pymysql使用步骤
    核心类 Connect链接用  和Cursor读写用
    1.与数据库服务器建立链接
    2.获取游标对象 (用于发送和接收数据)
    3.用游标执行sql语句
    4.使用fetch方法来获取执行的结果
    5.关闭链接  先关游标 再关链接
    
    游标的常用方法
    1.创建游标  conn.cursor(指定查询结果的数据类型)
    2.excute  执行sql
    3.fetchone(当sql只有一条记录时)  many(sql有多条并且需要指定条数)  all(多条)
    4.scroll  用于修改游标的当前位置
    
    注意: pymysql 默认不提交修改  但是注意(指的是对表中记录的操作不提交)  像删库 删表 是无法撤销的

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)

# # 添加数据
# res = cursor.execute("insert into emp values(100,'胡歌','男',30,1,'job',60000)")
# if res:
#     print("插入成功")
# else:
#     print("插入失败")


# 提交修改   因为pymysql 模块默认是启用事务的  你的sql语句 如果不提交 相当于没有执行

# conn.commit()
# res = cursor.execute("drop database day42")


# res = cursor.execute("delete from t1 where id = 1")
# print(res)

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()

#  小明有100块 准备给小花转50
# update moneyTable set money = money - 50 where name = "小明";
# 发生一些别错误  如果发生了错误 就执行撤销操作 rollback;
# update moneyTable set money = money + 50 where name = "小花";


以上为本次学习内容

猜你喜欢

转载自blog.csdn.net/sql121407/article/details/82748118