[英]How to format query results into my extended dictionary object?
我有 SQL 表:
問題
q_id (PK) | 用戶ID(FK用戶(用戶ID)) | 問題 |
---|---|---|
1 | 111 | “1到4之間是什么?” |
2 | 222 | “5到7之間是什么?” |
回答
a_id (PK) | q_id(FK 問題(q_id)) | 回答 |
---|---|---|
1 | 1 | '2' |
2 | 1 | '3' |
3 | 2 | '6' |
在 Python 中,我擴展了 dict 以便它具有預定義的問題和答案鍵:
class MyQuestion(dict):
def __init__(self, question, answers):
self['question'] = question
self['answers'] = answers
我的目標是最終得到一個 MyQuestion 對象列表(question_list)。 目前我正在做這樣的事情並且它有效:
question_list = []
cursor.execute("SELECT q_id, question FROM question WHERE user_id =(%s)", userID)
result = cursor.fetchall()
for question in result:
cursor.execute("SELECT answer FROM answers WHERE q_id = (%s)", question[0])
answers = cursor.fetchall()
question_list.append(MyQuestion( question[1], answers ) )
我想對此進行修改,以便只需要進行一個查詢。 因此,我創建了一個查詢,可以獲取用戶提出的每個問題的所有答案,並且我想要與上述相同的結果。
SELECT answer.answer, question.question
FROM answer
Left JOIN question on answer.q_id=question.q_id
WHERE question.user_id = (%s), userID)
如何格式化我的 MyQuestions 對象列表的結果?
cursor.execute("SELECT answer.answer, question.question FROM answer Left JOIN question on answer.q_id=question.q_id WHERE question.user_id = (%s)", userID)
result = cursor.fetchall()
question_list = []
my_questions = {}
for answer in result:
if answer[1] in my_questions.keys():
my_questions[answer[1]]['answers'].append(answer[0])
else:
my_questions[answer[1]] = MyQuestion(answer[1], [answer[0]])
question_list = my_questions.value()
使用連接查詢進行查詢后,使用問題字符串作為鍵將結果組織到字典中。 鍵也可以是 q_id。
對於查詢中的每一行,如果問題已經作為鍵存在,則 go 將值 MyQuestion object 和 append 的答案 MyQuestion['answer']。 否則,使用新的 MyQuestion object 將問題添加為鍵。
返回 MyQuestions 列表的 my_questions 字典的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.