2015-01-23 5 views
0
import sqlite3 

Class = str(input("Which class are you in? A) 11A B) 11B C) 11C")) 
f_name = str(input("What is your first name?")) 
s_name = str(input("What is your surname?")) 
h_score = "8" 
a_score = "7" 
t_taken = "3" 

if Class == "11A" or "11a": 
    counter = 0 
    while counter < 1: 
     db_students = sqlite3.connect('//persian/controlledassessment$/work/11 C CS/10BakeEd/Python/Task 2/db_Students.db') 
     c=db_students.cursor() 
     c.execute('''CREATE TABLE IF NOT EXISTS ClassA 
     (student_firstname text, 
     student_surname text, 
     h_score number, 
     a_score number, 
     t_taken number, 
     Class text) 
     ''') 
     c.execute('''INSERT INTO ClassA 
     VALUES (?, ?, ?, ?, ?, ?)''',(f_name, s_name, h_score, a_score, t_taken, Class)) 
     db_students.commit() 
     c.execute("SELECT * FROM ClassA") 
     fetchall=c.fetchall() 
     print(fetchall) 
     db_students.close() 
     counter = counter + 1 





elif Class == "11B" or "11b": 
    print() 

elif Class == "11C" or "11c": 
    print() 

else:  
    print("") 

Это мой код в настоящий момент, и некоторые из переменных в них являются заполнителями. То, что я хочу сделать, это вытащить информацию из созданной мной базы данных и присвоить ее переменным, чтобы я мог использовать их в вычислениях, таких как средние.Python Получение информации из базы данных SQLite3

+0

Возможно, не связано: 'если Class ==" 11A "или" 11a ":' не делает то, что вы думаете, что он делает. Вы хотите использовать 'if Class in (« 11A »,« 11a »):' или 'if Class.lower() ==" 11a ":'. Кроме того, нет необходимости вызывать 'str()' для результата из 'input()'. –

ответ

0

fetchall() возвращает список строк, где каждая строка является кортежем, содержащим (в данном случае) шесть значений.

Вы могли бы пройти через этот список, но если вам не нужно делать случайный доступ ко всем строкам, это лучше использовать курсор в качестве итератора:

c.execute(...) 
for row in c: 
    print(c[0]) # prints all first names 
else: 
    pass   # no rows found 

Если вы хотите, чтобы вычислить средние значения, было бы лучше сделать это непосредственно в SQL:

c.execute("SELECT AVG(h_score), AVG(a_score) FROM ClassA WHERE Class LIKE '11a'") 
avg_h, avg_a = c.fetch() 
Смежные вопросы