SQL:

  一对多关系

  多对多关系

1、登录(user_info.nid=1)

select nid,username from user_info where username=%s and password=%s

2、获取菜单

select caption from permiss_to_user left join permission on permission_to_user.permission_id = permission.nid where permission_to_user.user_id = %s    #第一步获取的用户当前nid

3、提问

1、登录(user_info.nid=1,role_id=2)

2、获取菜单

select caption from permission left join permission_to_role on ... where role_id = %

3、打印所有菜单

4、菜单显示?如何跟代码关联起来

反射调用

创建目录:

smoke@smoke-GS70-2PC-Stealth:~/文档/DocumentFile/PycharmProjects/pythonProject/join$ tree pra
pra
├── app.py
├── bin
│   └── __init__.py
├── __init__.py
└── src
    ├── commons.py
    ├── __init__.py
    └── __pycache__
        ├── commons.cpython-38.pyc
        └── __init__.cpython-38.pyc

3 directories, 7 files

commons.py

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: commons
# time: 2021/10/15

def add():
    print('add')

app.py

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: app
# time: 2021/10/15

from src import commons

commons.add()

/home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/pra/app.py
add

Process finished with exit code 0

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: app
# time: 2021/10/15

from src import commons

# commons.add()

func_name = 'add'

func = getattr(commons,func_name)
func()

/home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/pra/app.py
add

Process finished with exit code 0

commons.py

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: commons
# time: 2021/10/15

def add():
    print('add')

def delete():
    print('add')

def modify():
    print('add')

app.py

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: app
# time: 2021/10/15

from src import commons

# commons.add()

func_name = 'add'
func_name = 'add'
func_name = 'add'

func = getattr(commons,func_name)
func()

2、获取菜单[{'caption':xx,'func':'add',{}]

permission_list = [

  {'caption': '添加用户', 'func': 'add'},

  {'caption': '添加用户', 'func': 'delete'},

  {'caption': '添加用户', 'func': 'fetch'},

]

for index,item in enumrate(permission_list,1):

  print(index, item['caption'])

1 添加用户

2 删除用户

3 查看用户

choice = input('请输入要选择的菜单?')
choice = int(choice)

permission = permission_list[choice-1]

func_name = permission['func']

 

from src import commons

func = getattr(commons,func_name)

func()

commons.py

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: commons
# time: 2021/10/15

def add():
    print('add')

def delete():
    print('add')

def modify():
    print('add')

def update():
    print('update')
    

创建user_info.py

smoke@smoke-GS70-2PC-Stealth:~/文档/DocumentFile/PycharmProjects/pythonProject/join$ tree pra
pra
├── app.py
├── bin
│   └── __init__.py
├── __init__.py
└── src
    ├── commons.py
    ├── __init__.py
    ├── __pycache__
    │   ├── commons.cpython-38.pyc
    │   └── __init__.cpython-38.pyc
    └── user_Info.py

3 directories, 8 files

创建permission.py  

smoke@smoke-GS70-2PC-Stealth:~/文档/DocumentFile/PycharmProjects/pythonProject/join$ tree pra
pra
├── app.py
├── bin
│   └── __init__.py
├── __init__.py
└── src
    ├── commons.py
    ├── __init__.py
    ├── permission.py
    ├── __pycache__
    │   ├── commons.cpython-38.pyc
    │   └── __init__.cpython-38.pyc
    └── user_Info.py

3 directories, 9 files

user_info.py

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: user_Info
# time: 2021/10/15

def add():
    print('add')

def delete():
    print('add')

def modify():
    print('add')

def update():
    print('update')

permission.py

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: permission
# time: 2021/10/15

def add():
    print('add')

def delete():
    print('add')

def modify():
    print('add')

def update():
    print('update')

创建order.py、merchant.py文件

smoke@smoke-GS70-2PC-Stealth:~/文档/DocumentFile/PycharmProjects/pythonProject/join$ tree pra
pra
├── app.py
├── bin
│   └── __init__.py
├── __init__.py
└── src
    ├── commons.py
    ├── __init__.py
    ├── merchant.py
    ├── order.py
    ├── permission.py
    ├── __pycache__
    │   ├── commons.cpython-38.pyc
    │   └── __init__.cpython-38.pyc
    └── user_Info.py

3 directories, 11 files

permission_list = [

  {'caption': '添加用户', 'func': 'add','module': 'user_info'},

  {'caption': '添加用户', 'func': 'delete','module': 'user_info'},

  {'caption': '添加用户', 'func': 'fetch','module': 'user_info'},

]

for index,item in enumrate(permission_list,1):

  print(index, item['caption'])

1 添加用户

2 删除用户

3 查看用户

choice = input('请输入要选择的菜单?')
choice = int(choice)

permission = permission_list[choice-1]

func_name = permission['func']

 

######

from src import commons

######根据字符串动态导入模块

r = IMPORT('user_info')

func = getattr(r,func_name)

func()

动态导入模块

app.py

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: app
# time: 2021/10/15

module = 'src.commons'
func_name = 'add'

import importlib

m = importlib.import_module(module)
print(m)

/home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/pra/app.py
<module 'src.commons' from '/home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/pra/src/commons.py'>

Process finished with exit code 0

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: app
# time: 2021/10/15

module = 'src.commons'
func_name = 'add'

import importlib

m = importlib.import_module(module)
func = getattr(m,func_name)
func()

/home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/pra/app.py
add

Process finished with exit code 0

user_info.py

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: user_Info
# time: 2021/10/15

def add():
    print('asdf')

def delete():
    print('add')

def modify():
    print('add')

def update():
    print('update')

app.py

#!/usr/bin/env python3.8
# -*- coding: UTF-8 -*-
# __author: smoke
# file: app
# time: 2021/10/15

module = 'src.user_Info'
func_name = 'add'

import importlib

m = importlib.import_module(module)
func = getattr(m,func_name)
func()

/home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/venv/bin/python /home/smoke/文档/DocumentFile/PycharmProjects/pythonProject/join/pra/app.py
asdf

Process finished with exit code 0