background image

 

 

47 

 

def get_topics(): 
    with sqlite3.connect('topics.db') as conn: 

        cursor = conn.cursor() 
        cursor.execute('SELECT topic_name, npc_name FROM topics') 
        topics = {row[0]: row[1] for row in cursor.fetchall()} 

    return topics 

 

Στη  συνάρτηση  get_user_name,  στόχος  είναι  η  ανάκτηση  του  μεγαλύτερου  user  id, 

δηλαδή του τελευταίου χρήστη που καταχωρήθηκε.  

Στο κομμάτι SELECT user_name FROM users 

                     WHERE id = (SELECT MAX(id) FROM users), 

με την ανάκτηση του τελευταίου id επιστρέφεται εν τέλη το όνομα του χρήστη που αφορά. 

Με τη μέθοδο cursor.fetchone αποθηκεύεται το όνομα χρήστη στη μεταβλητή result. 

Αν υπάρχει καταχώρηση ονόματος τότε επιστρέφεται result[0] δηλαδή το πρώτο στοιχείο, το 

user_name, ειδάλλως η τιμή που θα επιστραφεί είναι None. 

 

def get_user_name(): 

    with sqlite3.connect('topics.db') as conn: 
        cursor = conn.cursor() 

        #get the user name from the user with the max id-last user 
        cursor.execute(''' 
            SELECT user_name FROM users 
            WHERE id = (SELECT MAX(id) FROM users) 

        ''') 
        result = cursor.fetchone() 
        if result: 
            #if there is a result return the user name 

            return result[0] 
        else: 
            #return None if no user is found 

            return None 

 

Με τον ίδιο τρόπο επιστρέφεται και το ίδιο το id του χρήστη. 

def get_last_user_id(): 

    with sqlite3.connect('topics.db') as conn: 
        cursor = conn.cursor() 
        cursor.execute('SELECT MAX(id) FROM users') 

        result = cursor.fetchone() 
        if result and result[0] is not None: 
            return result[0] 
        else: 

            return None 

 

Η get_answered_questions επιλέγει τις στήλες question (ερώτηση) και answer (απάντηση) από 

τον  πίνακα  questions.  Το  topic  και  το  user_id  πρέπει  να  ταυτίζονται  με  τις  ομώνυμες 

παραμέτρους τους. Μέσω του cursor.fetchall επιστρέφονται όλα τα αποτελέσματα ως tuples.