用户信息管理系
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'