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

溫馨提示×

溫馨提示×

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

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

Python中的sqlite3數據庫怎么用

發布時間:2022-11-14 09:10:26 來源:億速云 閱讀:131 作者:iii 欄目:編程語言

今天小編給大家分享一下Python中的sqlite3數據庫怎么用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

sqlite3數據庫

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

Python + Mysql = SQLite

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 即可。

代碼:

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

保山市| 宝坻区| 柘城县| 惠水县| 白银市| 姜堰市| 乐亭县| 九龙县| 界首市| 甘谷县| 古田县| 龙陵县| 永济市| 龙游县| 惠东县| 洪雅县| 梁平县| 宜兰市| 巴马| 台南市| 乌拉特中旗| 鹰潭市| 钟祥市| 琼海市| 册亨县| 马山县| 田林县| 临安市| 盘山县| 延安市| 桂林市| 肥城市| 方山县| 平顶山市| 长宁区| 山阳县| 如皋市| 景泰县| 双鸭山市| 龙州县| 廉江市|