48
Χρησιμεύει στο να διατηρηθεί σωστά ο αριθμός των ερωτήσεων που απαντήθηκαν σε κάθε
θεματική από το χρήστη.
def get_answered_questions(user_id, topic):
with sqlite3.connect('topics.db') as conn:
cursor = conn.cursor()
#select questions and answers for a specific topic
cursor.execute('SELECT question, answer FROM questions WHERE topic=? AND id IN (SELECT
question_id FROM user_questions WHERE user_id=?)', (topic, user_id))
#return all the results
return cursor.fetchall()
Η save_question αποθηκεύει κάθε νέα ερώτηση που δημιουργεί το LLM και την απάντηση της
στη βάση δεδομένων. Η συνάρτηση δέχεται τρεις παραμέτρους:
• topic: Το θέμα στο οποίο ανήκει η ερώτηση.
• question: Η ερώτηση.
• answer: Η απάντηση στην ερώτηση.
Η εντολή INSERT INTO χρησιμοποιείται για την προσθήκη δεδομένων στον πίνακα questions,
ενώ τα “?” λειτουργούν ως θέσεις για τις παραμέτρους (topic, question, answer).
Τέλος επιστρέφεται το id της εγγραφής που μόλις προστέθηκε στον πίνακα μέσω του
cursor.lastrowid.
def save_question(topic, question, answer):
with sqlite3.connect('topics.db') as conn:
cursor = conn.cursor()
#insert the new question and answer in the questions table
cursor.execute('INSERT INTO questions (topic, question, answer) VALUES (?, ?, ?)',
(topic, question, answer))
conn.commit()
return cursor.lastrowid
Στη save_user_question ο χρήστης συνδέεται με την ερώτηση που απάντησε και αποθηκεύεται
το id του και το id της ερώτησης στον πίνακα user_questions.
def save_user_question(user_id, question_id):
with sqlite3.connect('topics.db') as conn:
cursor = conn.cursor()
#insert in user_questions a new data row to associate user id with a question
cursor.execute('INSERT INTO user_questions (user_id, question_id) VALUES (?, ?)',
(user_id, question_id))
#commit to ensure saving data
conn.commit()