我在任何地方都找不到相关的东西。我想在mysql和python上保存的“password”上设置一个超时。
cur.execute("INSERT INTO generatedcode(password, codetimeout) VALUES (%s, %s)", [passwordd, timestamp])
e5nszbig1#
if request.method == 'GET' or 'POST': cur1 = mysql.connection.cursor() result = cur1.execute("SELECT password FROM generatedcode " "WHERE DATE_SUB(CURRENT_TIME (),INTERVAL 10 MINUTE) <= codetimeout;")
zsbz8rwp2#
由于我对python不够熟悉,因此我将把代码的细节留给您;我将只介绍解决方案的想法和相关的sql命令(语法需要验证,因为我没有测试它的环境)。假设您想设置从保存密码开始的1小时超时,并且您的表(至少)有以下两个字段: Password 以及 Expiration (我假设密码将是二进制类型以允许加密,过期将是datetime类型)。然后,您将实现以下sql命令:
Password
Expiration
INSERT INTO <your table> (Password , Expiration ) VALUES (%s , DATEADD(NOW(),3600))
[为清晰起见添加空格]把那根线送到db那里 %s 将替换为密码的值。什么 DATEADD(NOW(),3600) 是否为:获取当前日期和时间,再加上一个小时。将密码插入表后,稍后将使用以下命令检索密码:
%s
DATEADD(NOW(),3600)
SELECT Password FROM <your table> WHERE User = <could be Username or any other key that you are using now> AND Expiration > NOW()
意思是,获取密码(如果有的话),它的到期日期仍然在将来。希望这就是你要找的。干杯!!编辑:我将在修复后添加您的代码:
@app.route('/signattendance', methods=['GET']) def signattendance(): stamp = "signed" error = None # now = datetime.datetime.today() # tdelta = datetime.timedelta(seconds=10000) now = datetime.datetime.now() if request.method == 'GET': cur1 = mysql.connection.cursor() result = cur1.execute("SELECT password FROM generatedcode WHERE codetimeout > NOW()") if result is False: cur = mysql.connection.cursor() cur.execute("INSERT INTO attendance(studentattendance) VALUES(%s,DATEADD(NOW(),3600)", [stamp]) mysql.connection.commit() cur.close() # cur1.close() flash('Succsefully signed', 'Acepted') else: flash('You couldnt sign attendance', 'Denied') else: return redirect(url_for('dashboard')) return render_template('signattendance.html', error=error)
请注意,我让db检查当前时间。
2条答案
按热度按时间e5nszbig1#
zsbz8rwp2#
由于我对python不够熟悉,因此我将把代码的细节留给您;我将只介绍解决方案的想法和相关的sql命令(语法需要验证,因为我没有测试它的环境)。
假设您想设置从保存密码开始的1小时超时,并且您的表(至少)有以下两个字段:
Password
以及Expiration
(我假设密码将是二进制类型以允许加密,过期将是datetime类型)。然后,您将实现以下sql命令:
[为清晰起见添加空格]
把那根线送到db那里
%s
将替换为密码的值。什么
DATEADD(NOW(),3600)
是否为:获取当前日期和时间,
再加上一个小时。
将密码插入表后,稍后将使用以下命令检索密码:
意思是,获取密码(如果有的话),它的到期日期仍然在将来。
希望这就是你要找的。
干杯!!
编辑:
我将在修复后添加您的代码:
请注意,我让db检查当前时间。