Python3 用户信息管理系统

这是一个使用Python3编写的用户信息管理系统,具备账户登录限制、用户信息的增删改查功能,支持数据存储到数据库并能导出为CSV和HTML文件。系统包括main.py、dbmysql.py等多个模块,配置文件conf.ini中密码采用base64加密。
摘要由CSDN通过智能技术生成

用户信息管理系

author = caozh
最后更新时间 2018-10-13
version = 5.1

—— 管理员账号密码:测试token账号:5775cbe26a3a3b153a3be6e68b9925e8db10597
—— 密码进行密文输入

用户信息存储格式
—— 对数据进行存储到数据库,方便以后读取 库:USERMESSAGE,表:message
—— 数据库账号和密码 已用base64加密 存到配置文件里

可以实现以下功能:
1、账户30s 内只能登陆失败3次,超过失败次数则锁定(锁定时间可自定义调整配置文件),需要30s 后再次登录重试
2、对用户信息的增删改查操作。查看可以分页展示,并导出csv文件和html文件 功能
3、打印追加日志到当前目录 error.log 里,并按天切割
增:追加新用户信息
删:对指定id记录进行删除
改:对指定id记录进行更新
查:根据输入的字符串 模糊查找 id name tel address,结果并分页展示,并可以导出csv文件和html文件 功能

文件函数说明

├── main.py			主函数
├── conf.ini			统一配置文件
├── dbmysql.py			数据库操作函数
├── error.log.2018-10-13	日志信息(按天切割)
├── index.html			导出html模版
├── login_def.py		登陆/锁定 函数
├── new.csv			导出csv样版
├── new.html			导出html样版
├── operate.py			用户操作相关函数
├── output_file.py		导出csv和html 函数
├── output_log.py		日志处理函数
├── README.md			说明
└── test			自测结果

运行main.py,具体自测结果见test…

main.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# __author__ = caozhi
# 最后更新时间 2018-10-12
# version:5.1

import output_log
import login_def
import operate


def main():
    if is_login:
        output_log.log_log('debug','登陆成功')
        print('=' * 70)
        print('''
    \033[31m欢迎来到某某信息管理系统 \033[0m
    ''')
        print('=' * 70)
        break_flag = 0

    while 1:
        if break_flag:
            print('卧槽 退出了')
            break
        print('''
 执行操作的序号:
 1、 插入一个用户信息.
 2、 查询当前用户信息.
 3、 更新某个用户信息.
 4、 删掉某个用户信息.
 5、 退出系统.
            ''')
        # 输入对用户信息的操作 按数据库逻辑实现,id 为主键
        action = input('\033[34m请输入需要执行操作的序号: \033[0m').strip()

        dict = {'1':operate.insert, '2': operate.select, '3':operate.update, '4':operate.delete, '5':operate.exit_system}
        break_flag = dict.get(action, operate.other_action)()

if __name__ == '__main__':
    is_login = login_def.login_def()
    main()

dbmysql.py

import configparser
import base64
import pymysql
import output_log

config = configparser.ConfigParser()
config.read('conf.ini')

def open_mysql():
    server_ip = config['MYSQL']['server_ip']
    user = str(base64.urlsafe_b64decode(config['MYSQL']['user']), encoding='utf-8')
    passwd = str(base64.urlsafe_b64decode(config['MYSQL']['passwd']), encoding='utf-8')
    db = pymysql.connect(server_ip, user, passwd, "USERMESSAGE")
    mysqldb = db.cursor()
    output_log.log_log('debug','连接数据库了')
    return db,mysqldb

def execute_mysql(mysqldb,sql):
    mysqldb.execute(sql)

def commit_mysql(db):
    db.commit()

def rollback_mysql(db):
    db.rollback()

def close_mysql(db,mysqldb):
    mysqldb.close()
    db.close()

login_def.py

import json
import time
import datetime
import requests
import base64
import getpass
import configparser
import os
import output_log

config = configparser.ConfigParser()
config.read('conf.ini')

my_name = config['CONF']['my_name']
MAX_LOGIN_TIMES = config['CONF']['MAX_LOGIN_TIMES']
PAGE_LIST = int(config['CONF']['page_list'])
lock_time = int(config['LOCK']['lock_time'])
break_flag = 0
has_error = 0

def login_def():
    now_time = time.time()
    lasttime = float(config['LOCK']['lasttime'])
    count = int(config['LOCK']['count'])
    usermessage = {'count': count, 'lasttime': lasttime}
    usermessage['lasttime'] = now_time
    config.set("LOCK", "lasttime", str(now_time))
    config.write(open('conf.ini', "w"))

drop = now_time - lasttime

# 判断是否大于30s

if int(drop) > lock_time:
    usermessage['count'] = MAX_LOGIN_TIMES

count = int(usermessage.get('count'))
is_login = 0
for i in range(count):
    TOKEN = getpass.getpass('\033[33m 请输入你的TOKEN(5775cbe26a3a3b153a3be6e68b9925e8db10557e): \033[0m').strip()
    headers = {'Authorization': 'token ' + TOKEN}
    #user_name = input('\033[33m 请输入你的姓名: \033[0m').strip()
    #password = getpass.getpass('\033[33m 请输入你的密码: \033[0m').strip()

    req = requests.get('https://api.github.com/user', headers=headers)
    output_log.log_log('info', json.dumps(req.json()))
    output_log.log_log('info', req.url)
    res = req.json()

    #if user_name == usermessage['name'] and password == usermessage['passwd']:
    if res.get("login",None) == my_name:
        print('\033[32m login success ---> 登陆成功 \033[0m')
        is_login = 1
        break
    else:
        count -= 1
        usermessage['count'] = count
        config.set("LOCK", "count", str(count))
        config.write(open('conf.ini'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值