如何使Python不覆盖SQLite条目

时间:2019-05-03 17:22:03

标签: python sqlite

我为学生提供登录/注销功能。问题在于,如果他们在同一天第三次登录,则代码将覆盖其先前的time_out时间戳。如果学生不小心退出了第三次时间戳,该如何代替上一个time_out时间戳?

import sqlite3
import datetime
import time  # used for sleep command
​
conn = sqlite3.connect('attendance.db')
​
c = conn.cursor()
​
​
# def create_db():
#     c.execute("""CREATE TABLE students (
#                 first text,
#                 date text,
#                 status_in text,
#                 time_in text,
#                 status_out text,
#                 time_out text
#                 )""")
#     conn.commit()
#     conn.close()
​
​
# Check if name has a daily entry, if doesnt exist store time_in timestamp
# If a timestamp already exists on that day put an time_out timestamp
def check_if_in():
    person = input('Name of student checking IN/OUT: ')
    date = datetime.date.today().strftime("%m-%d-%y")
    c.execute('SELECT status_in FROM students '
              'WHERE first = ? AND date = ?', [person, date])
    conn.commit()
    result = c.fetchone()
    if result is None:
        status_in = 'IN'
        timestamp = time.strftime('%I:%M %p')
        day = datetime.date.today().strftime('%m-%d-%y')
        c.execute("INSERT INTO students (first, date, status_in, time_in) "
                  "VALUES(?, ?, ?, ?)", [person, day, status_in, timestamp])
        conn.commit()
        check_if_in()
    else:
        c.execute("SELECT status_in FROM students "
                  "WHERE first = ? AND date = ?", [person, date])
        conn.commit()
        result2 = c.fetchone()
        convert = ''.join(map(str, result2))
        if convert == 'IN':
            timestamp = time.strftime('%I:%M %p')
            c.execute("UPDATE students SET status_out = 'OUT' "
                      "WHERE first = ? and date = ?", [person, date])
            c.execute("UPDATE students SET time_out = ? "
                      "WHERE first = ? and date = ?", [timestamp, person, date])
            conn.commit()
            check_if_in()
        else:
            print('This will direct somewhere else')
​
​
check_if_in()
#create_db()

0 个答案:

没有答案