72
σε μορφή αρχείου κειμένου. Το αρχείο περιλαμβάνει πληροφορίες από τη βάση δεδομένων και
είναι οργανωμένο ανά θεματική ενότητα.
Αρχικά ανακτώνται τα απαραίτητα δεδομένα, ερωτήσεις, απαντήσεις και θεματικές από
τη βάση δεδομένων, με βάση το id του χρήστη.
Γίνεται χρήση του INNER JOIN ώστε να
συνδεθούν οι δύο πίνακες της βάσης δεδομένων, user_questions (ο πίνακας που καταγράφει τις
ερωτήσεις που απάντησε κάθε χρήστης) και questions (ο πίνακας που περιέχει τις ερωτήσεις
και τις απαντήσεις τους).
cursor.execute('''
SELECT q.topic, q.question, q.answer
FROM user_questions uq
INNER JOIN questions q ON uq.question_id = q.id
WHERE uq.user_id = ?
''', (user_id,))
Με τη χρήση της open()
σε λειτουργία εγγραφής ('w'), δημιουργείται το αρχείο και γράφεται
στην κορυφή του μια επικεφαλίδα με το id του χρήστη και τον τίτλο "Questions and Answers",
ακολουθούμενη από μια γραμμή διαχωρισμού, ώστε να είναι πιο οργανωμένο και
ευπαρουσίαστο. Ελέγχεται αν υπάρχουν διαθέσιμες εγγραφές ερωτήσεων και απαντήσεων. Αν
ναι, οι πληροφορίες οργανώνονται ανά θέμα χρησιμοποιώντας το λεξικό topic_questions. Για
κάθε θεματική, καταγράφεται ο τίτλος της και οι ερωτήσεις-απαντήσεις που περιλαμβάνει.
records = cursor.fetchall()
if records:
file_path = f'user_{user_id}_answers.txt'
with open(file_path, 'w') as file:
file.write(f"Users:{user_id}Questions and
Answers\n")
file.write("______________________\n\n")
topic_questions = {}
for topic, question, answer in records:
if topic not in topic_questions:
topic_questions[topic] = []
topic_questions[topic].append((question,
answer))
for topic, qas in topic_questions.items():
file.write(f"Topic: {topic}\n")
file.write("_________________________\n")
for question, answer in qas:
file.write(f"Question:{question}\nAnswer:
{answer}\n\n")
18