python学习之基本权限管理系统

本文介绍了如何使用Python和MySQL创建一个基本的权限管理系统。主要内容包括数据库表设计、表的创建、程序实现及测试。涉及的知识点包括mysql创建表、SQL语句、外键、navicat使用、pymysql模块以及Python动态导入模块。通过该系统,可以进行用户和权限的增删操作,并管理权限与角色的关系。
摘要由CSDN通过智能技术生成

    通过mysql和python相关知识实现简单权限管理系统。主要功能有添加、删除用户、添加删除权限以及分配权限等。实现过程中主要运用了mysql创建表、sql语句、外键、navicat使用、python模块pymysql操作mysql、python动态导入模块等相关知识。

一、数据库表设计

     1、表的相关描述

     表的具体信息描述

一共设计了4张表
    用户信息表(user_type):存储用户名、密码信息,user_type_id为外键和角色表相关联‘,用来标识用户的角色
    角色信息表(user_type):用来定义角色,如:普通用户,超级用户等
    权限信息表(permission):用来定义权限信息,func是指实现该权限的方法,module是指该方法对应模块的路径,在python中可以动态导入该模块调用相关方法
    权限和角色对应关系表(user_type_to_permission):user_type_id为外键是角色id和角色信息表关系,permission_id为外键是权限id和权限信息表关联
View Code

二、创建表 

    1、按照如下顺序创建表

     角色表

CREATE TABLE user_type (
    nid INT NOT NULL auto_increment PRIMARY KEY,
    NAME VARCHAR (30)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
View Code

    用户信息表

CREATE TABLE user_info (
    nid INT NOT NULL auto_increment PRIMARY KEY,
    username VARCHAR (30),
    passwd VARCHAR (30),
    user_type_id INT,
    FOREIGN KEY (user_type_id) REFERENCES user_type (nid)

) ENGINE = INNODB DEFAULT CHARSET = utf8;
View Code

    权限信息表

CREATE TABLE permission (
    nid INT NOT NULL auto_increment PRIMARY KEY,
    caption VARCHAR (30),
    module VARCHAR (30),
    func VARCHAR (30)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
View Code

    权限和角色对应关系表

CREATE TABLE user_type_to_permission (
    nid INT NOT NULL auto_increment PRIMARY KEY,
    user_type_id INT,
    permission_id INT,
    FOREIGN KEY (user_type_id) REFERENCES user_type (nid),
    FOREIGN KEY (permission_id) REFERENCES permission (nid)
) ENGINE = INNODB DEFAULT CHARSET = utf8;
View Code

    2、插入模拟数据

insert into user_type (name) values ('超级管理员'),('普通管理员');
insert into permission (caption,module,func) values ('添加用户','src.auth.user','add_user'),('删除用户','src.auth.user','del_user');
insert into user_info (username,passwd,user_type_id) values ('root','123',1),('yqh','123','2');
insert user_type_to_permission (user_type_id,permission_id) values (1,1),(1,2),(2,1);
View Code
 三、程序实现

     编写代码时主要遵从以下规则:1、为操作每一张表的sql专门写一个类 2、需要做连接查询时sql语句放在from后面那张表对应的类中 3、操作sql的代码和业务的代码分开在不同目录

    1、程序目录说明

├── bin
│   └── main.py      #程序入口
├── config
│   └── settings.py #配置文件,数据库的一些配置信息
└── src                 #src目录主要放一些和业务相关的方法
    ├── auth
    │   ├── task.py  #创建/删除任务
    │   ├── type_permission.py #查看用户权限、为某个角色分配权限
    │   ├── user.py   #添加/删除用户
    │   └── user_type.py #添加/删除角色
    ├── repository     #repository目录主要放操作数据库的方法 定义不同的类
    │   ├── permission.py #操作权限表的类
    │   ├── user_info.py  #操作用户信息的表的类
    │   ├── user_type.py  #操作角色表的类
    │   └── user_type_to_permission.py #操作权限和角色对应关系的类
    ├── service.py  #主程序
    ├── test.py
    └── utils   #utils 目录主要放一些公共模块
        ├── commons.py  
        ├── db_connection.py  #连接和关闭数据库
View Code

     2、程序代码

     2、1 main.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import os
import sys

BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASEDIR)
from src import service


if __name__ == '__main__':
    service.execute()
View Code

    2、2 settings.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 当前登录用户的权限列表
# ...
current_user_permission_list = []

# 当前登录用户的基本信息:
# {'nid':1,'username': 'root', 'role_id': 1}
current_user_info = {}

PY_MYSQL_CONN_DICT = {
    "host
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值