maroph icon

db_tracking_cards.py

maroph | PRO | 11/16/19 07:01:04 PM UTC | 0 ⭐ | 381 👁️ | Never ⏰ | []
Python |

2.92 KB

|

None

|

0 👍

/

0 👎

import sqlite3
from random import randint
from time import time
 
conn = sqlite3.connect("computer_cards.db")
 
 
def get_number_of_cards():
    """Returns the total number of rows in table computer"""
    # not used in this sample but very useful in general
    cursor = conn.cursor()
    sql = "SELECT COUNT(*) FROM 'computer'"
    print("SQL:>>>>>" + sql + "<<<<<")
    cursor.execute(sql)
    count = cursor.fetchone()
    cursor.close()
    print("SQL: number of rows in table computer: {}".format(count[0]))
    return count[0]
 
 
def get_number_of_picked_cards():
    """Returns the total number of rows in table picked"""
    # not used in this sample but very useful in general
    cursor = conn.cursor()
    sql = "SELECT COUNT(*) FROM 'picked'"
    print("SQL:>>>>>" + sql + "<<<<<")
    cursor.execute(sql)
    count = cursor.fetchone()
    cursor.close()
    print("SQL: number of rows in table picked: {}".format(count[0]))
    return count[0]
 
 
def read_all_cards():
    sql = "SELECT * FROM computer"
    print("SQL:>>>>>" + sql + "<<<<<")
    result = conn.execute(sql)
    return result.fetchall()
 
 
def insert_picked(name):
    sql = "INSERT INTO picked(name, time) VALUES ('{}', {})".format(name, time())
    print("SQL:>>>>>" + sql + "<<<<<")
    conn.execute(sql)
    conn.commit()
 
 
def read_last_picked():
    sql = "SELECT * FROM picked ORDER BY time DESC"
    print("SQL:>>>>>" + sql + "<<<<<")
    result = conn.execute(sql)
    return result.fetchone()
 
 
def dump_table_picked():
    sql = "SELECT * FROM picked ORDER BY time DESC"
    print("SQL:>>>>>" + sql + "<<<<<")
    result = conn.execute(sql)
    picked_cards = result.fetchall()
    print("cards in table picked")
    print("---------------------")
    for card in picked_cards:
        print(card)
    print("---------------------")
 
def delete_content_of_table_picked():
    sql = "DELETE FROM picked"
    print("SQL:>>>>>" + sql + "<<<<<")
    cursor = conn.cursor()
    cursor.execute(sql)
    print("SQL: number of deleted rows: {}".format(cursor.rowcount))
 
 
def pick_card():
    last_picked_card = read_last_picked()
    print("last_picked_card:", last_picked_card)
 
    random_card = cards[randint(0, len(cards) - 1)]
 
    if last_picked_card is not None:
        # the if above fixes a bug when table picked is empty
        while random_card[0] == last_picked_card[0]:
            random_card = cards[randint(0, len(cards) - 1)]
 
    insert_picked(random_card[0])
    return random_card
 
 
cards = read_all_cards()
print("number of available cards: {}".format(get_number_of_cards()))
 
picked_cards = get_number_of_picked_cards()
if picked_cards > 10:
    print("truncate table picked")
    delete_content_of_table_picked()
 
resp = "y"
while resp == "y":
    print("picked card:", pick_card())
    dump_table_picked()
    print("")
    resp = input("pick another card?[y/n]:")
 
conn.close()

Comments