您的位置:首页 > 编程语言 > Python开发

Python 登陆接口小程序V2

2016-09-02 23:44 459 查看
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
[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 
'''
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  接口 Python 登陆