91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python數據庫sqlite3怎么創建并使用

發布時間:2022-09-20 09:37:18 來源:億速云 閱讀:220 作者:iii 欄目:開發技術

本篇內容介紹了“Python數據庫sqlite3怎么創建并使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

sqlite3數據庫

sqlite3 數據庫是 Python 自帶的數據庫,甚至不需要額外安裝模塊,而且操作簡單。

1.需要的模塊(只有一個)

import sqlite3

2.模塊的使用

首先打開我們的編譯器(推薦使用vscode,因為數據庫文件后綴是 .db,vscode里顯示比較清楚)

2.1創建與數據庫的連接

先放上代碼

conn = sqlite3.connect('test.db')

使用 sqlite3 的 connect 函數可以創建數據庫或者連接數據庫,

如果這個數據庫存在,就連接這個數據庫,

如果這個庫不存在,就創建數據庫。

右邊小括號里的是數據庫名。

我們把這個保存在變量 conn 里,這個變量名可以自己起

公式:

變量名 = sqlite3.connect( '你要的數據庫名.db' )

2.2創建游標

還是先放代碼

cur = conn.cursor()

在 2.1 中,我們創建了與數據庫的連接,我們現在還需要一個游標來執行 sql 命令,

所以我們要用 conn 的 cursor 函數創建一個游標。

conn 就是剛才 2.1 中創建的保存數據庫的變量,你要用你定義的變量名,

再定義一個變量表示這個游標。

公式:

變量 = 數據庫變量.cursor()

2.3創建 table

先放代碼

import sqlite3
def check(db_name,table_name):
    conn = sqlite3.connect(db_name)
    cursor = conn.cursor()
    sql = '''SELECT tbl_name FROM sqlite_master WHERE type = 'table' '''
    cursor.execute(sql)
    values = cursor.fetchall()
    tables = []
    for v in values:
        tables.append(v[0])
    if table_name not in tables:
        return False # 可以建表
    else:
        return True # 不能建表
conn = sqlite3.connect('數據庫名.db')
#創建一個游標 cursor
cur = conn.cursor()
if (check("數據庫名.db","Table名") == False):
    sql_text_1 = '''CREATE TABLE 你的table名
            (xx XX,
                xx XX);'''
    # 執行sql語句
    cur.execute(sql_text_1)

代碼比較長,因為我把 2.1 和 2.2 的兩行代碼也加了上去。

我們需要 table(表)來存數據,創建 table 的代碼如下:

變量名 = '''CREATE TABLE 你的table名
            (xx XX,
                xx XX);'''
# 執行sql語句
cur.execute(上面的變量名)

上面是用一個變量保存了創建 table 的 sql 語句,

下面使用 cur(就是剛才那個游標).execute() 函數執行創建 table 的語句。

我們也可以使用 cur.executemany 函數來同時執行多條 sql 語句。

sql 語句的內容,比如創建表的格式是上面這樣的

格式:' ' 'CREATE TABLE 你的 table 名 (xx XX, xx XX);' ' '

 這行代碼里小寫的 xx 就是你要的屬性名,比如你的數據庫是這樣

姓名班級
張三1

其中,屬性名就是 “姓名” 和 “班級”,

小寫的 xx 就應該分別寫姓名和班級(注意,不帶引號)

后面的大寫的XX就是這個屬性所接受的數據的類型,

就相當于Python中的 int 類型和 str 類型。

只不過,我們在 sql 語句中,把 int 類型改成了 NUMBER,把 str 類型改成了 TEXT

當我們運行這個代碼,我們的文件夾目錄里會多出來一個 你的數據庫名.db 文件

當我們再次運行,會發現程序報錯了。

報錯信息的大概意思是:table 已經存在了。

這是因為我們第一次運行時已經創建了 table ,我們再次運行時,

程序會再次創建同名 table,就會報錯。

所以,我們創建 table 之前要判斷一下這個table存不存在,如果存在就不創建,如果不存在就創建

這個判斷我把它寫成了一個函數,就是我上面代碼那個 check 函數。

這一步也是我想了好長時間,還找資料找了好長時間才知道的

2.4插入數據

先放代碼

cur.executemany('INSERT INTO 你的table名 VALUES (?,?)', data)
conn.commit()

其中第一行代碼中 executemany() 函數的意思就是同時執行多個 sql 語句。

這個函數的括號里寫的逗號前面就是插入數據的 sql 語句,后面 data 可以是一個列表或者元組。注意,如果是列表的話,必須是列表里面有若干個元組的形式。

插入數據的 sql 語句的使用:

INSERT INTO 你的table名 VALUES (若干個逗號,用逗號分割)

這里我們要插入 data 這些數據,所以在括號里我們使用問號 “?” 來代替這個元素。

大家可以回去看一下 2.3 創建table 的講解,在2.3中,我們創建了兩個屬性,分別是 “姓名” 和 “班級”。因為我們有兩個屬性,所以要有兩個問號。

2.5查找數據

先放代碼

def find_tb():
    cur.execute("select * from 你的table名")
    # 提取查詢到的數據
    return cur.fetchall()

這個就很簡單了,我寫這個函數使用時可以把你那個table里的所有數據都取出來。

第一行是查找table的 sql 語句,格式是:

select * from 你的table名

下一行再用 fetchall() 函數把數據提取出來,直接 return 即可。

快樂的coding時間!

好了,前面的東西大家應該也都看完了,來點 demo ?

順便說一下,我這個 demo 的靈感來源是最近在網上刷到很多高考查分的視頻,恰好最近在做這個數據庫,所以說我這個 demo 受考試的啟發,就做了一個學生分數系統,其實這個特別爽,可以把自己的分數改成全部滿分!雖然實際沒啥用,但是還是很爽的

代碼里沒有我沒講過的部分,大家可以對照上面的講解看代碼,VScode無報錯運行。

對了,如果有看不懂的可以私信我,不出意外的話一天之內就能回復。

代碼:

import sqlite3
import os
def check(db_name,table_name):
    conn = sqlite3.connect(db_name)
    cursor = conn.cursor()
    sql = '''SELECT tbl_name FROM sqlite_master WHERE type = 'table' '''
    cursor.execute(sql)
    values = cursor.fetchall()
    tables = []
    for v in values:
        tables.append(v[0])
    if table_name not in tables:
        return False # 可以建表
    else:
        return True # 不能建表
def find_tb():
    cur.execute("select * from scores")
    # 提取查詢到的數據
    return cur.fetchall()
def zcd():
    os.system('cls')
    print("學生分數管理系統")
    print("1.增加學生分數信息")
    print("2.查看全部學生分數")
    print("3.查詢分數段內學生分數")
    print("4.退出")
 
if __name__ == '__main__':
    # 創建與數據庫的連接
    conn = sqlite3.connect('stuents_scores.db')
    #創建一個游標 cursor
    cur = conn.cursor()
    # 如果沒有表則執行建表的sql語句
    if (check("stuents_scores.db","scores") == False):
        sql_text_1 = '''CREATE TABLE scores
                (姓名 TEXT,
                    班級 TEXT,
                    性別 TEXT,
                    語文 NUMBER,
                    數學 NUMBER,
                    英語 NUMBER,
                    總分 NUMBER);'''
        # 執行sql語句
        cur.execute(sql_text_1)
    zcd()
    while True:
        op = int(input("請輸入:"))
        if op == 1:
            S_name = input("請輸入要添加的學生的姓名(如:張三):")
            S_class = input("請輸入要添加的學生的班級(如:一班):")
            S_xb = input("請輸入該學生性別:")
            S_Chinese = int(input("請輸入該學生語文成績(只輸入一個數字,如:82):"))
            S_Maths = int(input("請輸入該學生數學成績(只輸入一個數字,如:95):"))
            S_English = int(input("請輸入該學生英語成績(只輸入一個數字,如:98):"))
            S_gj = S_Maths+S_Chinese+S_English # 總分
            data = [(S_name, S_class, S_xb, S_Chinese, S_Maths, S_English,S_gj)]
            cur.executemany('INSERT INTO scores VALUES (?,?,?,?,?,?,?)', data)
            conn.commit()
            # cur.close()
            # conn.close()
            print("成功!")
            os.system('pause')
            os.system('cls')
            zcd()
        elif op == 2:
            info_list = find_tb()
            print("全部學生信息(排名不分前后):")
            for i in range(len(info_list)):
                print("第"+str(i+1)+"個:")
                print("學生姓名:"+str(info_list[i][0]))
                print("學生班級:"+str(info_list[i][1]))
                print("學生性別:"+str(info_list[i][2]))
                print("學生語文成績:"+str(info_list[i][3]))
                print("學生數學成績:"+str(info_list[i][4]))
                print("學生英語成績:"+str(info_list[i][5]))
                print("學生總成績:"+str(info_list[i][6]))
                os.system('pause')
                os.system('cls')
                zcd()
        elif op == 3:
            info_list = find_tb()
            fen = int(input("你要要查詢總成績高于n分的學生, 請輸入n:"))
            for i in range(len(info_list)):
                if info_list[i][6] >= fen:
                    print("查詢結果:")
                    print("第"+str(i+1)+"個:")
                    print("學生總成績:"+str(info_list[i][6]))
            os.system('pause')
            os.system('cls')
            zcd()
        elif op == 4:
            os.system('cls')
            break

“Python數據庫sqlite3怎么創建并使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平遥县| 当涂县| 河间市| 宣武区| 潞西市| 瑞金市| 武平县| 新建县| 东丰县| 金秀| 新津县| 新龙县| 济南市| 辉南县| 罗甸县| 福清市| 玛多县| 肥东县| 巴中市| 彩票| 栾川县| 西充县| 鲜城| 鄂托克旗| 郴州市| 宜都市| 甘洛县| 巴南区| 琼海市| 宣恩县| 来凤县| 根河市| 新晃| 大厂| 蓬溪县| 鄂州市| 巴马| 湘潭市| 清河县| 宜宾县| 嘉兴市|