簡體   English   中英

如何給mysql記錄超時30分鍾后到期?

[英]How to give a mysql record a timeout to expire after 30 minutes?

我在任何地方都找不到相關的東西。 我想在使用Python保存在mysql上的“密碼”上設置超時。

cur.execute("INSERT INTO generatedcode(password, codetimeout) VALUES (%s, 
%s)", [passwordd, timestamp])

由於我對python的了解不夠,因此我將代碼的細節留給您; 我將僅介紹解決方案的思想和相關的SQL命令(因為我沒有測試環境,因此需要驗證語法)。

假設您要設置從保存密碼起的1個小時的超時時間,並且表具有(至少)以下兩個字段: PasswordExpiration (我假設密碼將是二進制類型,以允許加密和到期將為DATETIME類型)。

然后,您將實現以下SQL命令:

INSERT INTO <your table> (Password , Expiration         ) 
      VALUES             (%s       , DATEADD(NOW(),3600))

[添加空格只是為了清楚起見]

並將該字符串發送到數據庫,其中%s將被密碼的值替換。

DATEADD(NOW(),3600)作用是:

  1. 獲取當前日期和時間,
  2. 增加一小時。

將密碼插入到表中之后,稍后將使用以下命令檢索密碼:

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)

請注意,我留給數據庫檢查當前時間。

  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;")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM