簡體   English   中英

Python從SQLite3數據庫檢索信息

[英]Python Retrieving Information from an SQLite3 Database

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("")

這是我目前的代碼,其中的一些變量是占位符。 我想做的是從創建的數據庫中提取信息,並將其分配給變量,以便可以在平均值等計算中使用它們。

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM