Python 登陆接口小程序V2
添加登陆时间,失败登陆时间#!/usr/bin/python
#_*_coding:utf-8 _*_
__author__ = 'gaogd'
import MySQLdb as mysql
import datetime
class Authon(object):
def __init__(self):
self.db = mysql.connect(user="root", passwd="xxxx@2015", db="logintest", host="192.168.10.12") # 数据库连接信息
self.db.autocommit(True)
self.cur = self.db.cursor()
self.cur.execute('set names utf8')
def strtodatetime(self, datestr, format):
return datetime.datetime.strptime(datestr, format)
def Login(self):
#addtime = datetime.datetime.now().__format__("%Y-%m-%d %H:%M:%S")
addtime = datetime.datetime.now()
username = raw_input(u'请输入你的用户名:')
err_count = 0
Flag = True
while Flag:
password = raw_input(u'请输入密码:')
if username.strip() == '':
print u'用户名不能为空!'
## select err_time from loginuser where user='xiaoming';
get_err_time_sql = "select err_time from loginuser where user='%s';" % username
self.cur.execute(get_err_time_sql)
get_err_time = self.cur.fetchall()
#print '------',get_err_time[0][0]
if get_err_time[0][0] == None :
pass
else:
print 'get_err_time::' ,get_err_time[0][0] ,'=======',addtime
err_time = get_err_time[0][0]
diff_time = (addtime - err_time).seconds
print 'diff_time::' ,diff_time
if not diff_time >= 300 :
Flag = False
if Flag:
# sql = select user,passwd from loginuser where user='gao3'and passwd='gao3';
select_user_passwd_sql = "select user,passwd from loginuser where user='%s'and passwd='%s';" % (username,password)
self.cur.execute(select_user_passwd_sql)
select_user_passwd = self.cur.fetchall()
if len(select_user_passwd) == 0:
print u'用户名或密码不正确!!'
err_count += 1
if err_count == 3:
print u'错误输入密码超过三次,程序自动退出!!'
##sql = update loginuser set err_time='2016-09-02 15:40:01' where user='gao1' ;
update_err_sql = "update loginuser set err_time='%s' where user='%s' " %(addtime,username)
self.cur.execute(update_err_sql)
Flag = False
else:
err_count = 0
##sql = update loginuser set login_time='2016-09-02 15:40:01' where user='gao1' ;
update_login_sql = "update loginuser set login_time='%s' where user='%s' " %(addtime,username)
self.cur.execute(update_login_sql)
print u'欢迎您来%s到Python家族!!' % username
return True
else:
print u'%s在5分钟登陆错误超过3次,请三十分钟后登陆!!' % username
def Register(self):
username = raw_input(u'请输入你要申请的用户名:')
password_one = raw_input(u'请输入密码:')
password_two = raw_input(u'请再次输入密码:')
addtime = datetime.datetime.now()
if username.strip() == '':
print u'用户名不能为空!'
if not username.isalnum():
print u'用户名不能包含特殊字符'
return False
if password_one.strip() == '':
print u'密码不能为空!'
return False
if not password_one.strip() == password_two.strip():
print u'你两次输入的密码不一致'
return False
## sql = insert into loginuser(user,passwd,err_count,time) values('gaogd','gaogd','0','2016-09-02 14:40:22');
create_user_sql = "insert into loginuser(user,passwd,create_time) values('%s','%s','%s')" % (username,password_one,addtime)
try:
print create_user_sql
self.cur.execute(create_user_sql)
except Exception as e:
print e
print u'创建用户失败!!'
return False
print u'创建用户成功:',username
def Deleuser(self):
username = raw_input(u'请输入你要删除的用户名:')
password = raw_input(u'请输入密码:')
if username.strip() == '':
print u'用户名不能为空!'
select_user_sql = "select user from loginuser;"
self.cur.execute(select_user_sql)
select_user = self.cur.fetchall()
Flag = False
for n in range(len(select_user)):
if username == select_user[n][0]:
Flag = True
if Flag :
#select passwd from loginuser where user='gao';v
select_passwd_sql = "select passwd from loginuser where user='%s';" % username
self.cur.execute(select_passwd_sql)
select_passwd = self.cur.fetchall()
if password.strip() == select_passwd[0][0].strip():
##删除用户
##DELETE FROM loginuser WHERE user='gao1';
select_deluser_sql = "DELETE FROM loginuser WHERE user='%s';" % username
self.cur.execute(select_deluser_sql)
print u'已经成功删除%s用户' % username
else:
print u'用户名或密码不正确!!'
def SelectFunction():
content=u'''
1.登陆Python家族
2.注册用户
3.删除用户
'''
print content
num = raw_input(u'请输入您的选择:')
if num.strip() == '1':
authon.Login()
return True
if num.strip() == '2':
authon.Register()
return True
if num.strip() == '3':
authon.Deleuser()
return True
print u'您的输入有误!!请输入您需要的功能对应的序号'
if __name__ == "__main__":
#pass
authon = Authon()
#authon.Register()
#authon.Login()
#authon.Deleuser()
SelectFunction()
"""
可以用版本1的数据进行修改:
alter table loginuser add login_time datetime Null;
alter table loginuser change time create_time datetime not Null;
ALTER TABLE loginuser drop err_count;
alter table loginuser add err_time datetime Null;
数据数据库以及对应的表
create database logintest ;
use logintest;
mysql> show create table loginuser \G;
*************************** 1. row ***************************
Table: loginuser
Create Table: CREATE TABLE `loginuser` (
`user` varchar(64) NOT NULL,
`passwd` varchar(128) DEFAULT NULL,
`create_time` datetime NOT NULL,
`login_time` datetime DEFAULT NULL,
`err_time` datetime DEFAULT NULL,
PRIMARY KEY (`user`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
mysql> desc loginuser;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| user | varchar(64) | NO | PRI | NULL | |
| passwd | varchar(128) | YES | | NULL | |
| create_time | datetime | NO | | NULL | |
| login_time | datetime | YES | | NULL | |
| err_time | datetime | YES | | NULL | |
+-------------+--------------+------+-----+---------+-------+
5 rows in set (0.01 sec)
mysql>
注册用户
登陆用户
删除用户
"""
'''
datetime 时间转换:
字符串转换为时间
get_err_time='2016-09-02 22:51:44'
err_time = datetime.datetime.strptime(str(get_err_time), '%Y-%m-%d %H:%M:%S')
http://blog.sina.com.cn/s/blog_684ae1750101kkid.html
'''