目錄
sqlite3資料庫
1.需要的模組(只有一個)
2.模組的使用
2.1建立與資料庫的連接
2.4插入数据
2.5查找数据
快乐的coding时间!
首頁 後端開發 Python教學 深入聊聊Python中的sqlite3資料庫

深入聊聊Python中的sqlite3資料庫

Nov 11, 2022 pm 06:30 PM
python sqlite3

深入聊聊Python中的sqlite3資料庫

sqlite3資料庫

深入聊聊Python中的sqlite3資料庫

#sqlite3 資料庫是Python 自帶的資料庫,甚至不需要額外安裝模組,而且操作簡單。

Python Mysql = SQLite

深入聊聊Python中的sqlite3資料庫

深入聊聊Python中的sqlite3資料庫

#但是這種資料庫在網路上的教學很少,因為我也是最近才知道,所以找了很久的資料,

今天終於找齊了,來總結一下。 真的找了好長時間啊

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
登入後複製

【相关推荐:Python3视频教程

以上是深入聊聊Python中的sqlite3資料庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

vscode 擴展是否是惡意的 vscode 擴展是否是惡意的 Apr 15, 2025 pm 07:57 PM

VS Code 擴展存在惡意風險,例如隱藏惡意代碼、利用漏洞、偽裝成合法擴展。識別惡意擴展的方法包括:檢查發布者、閱讀評論、檢查代碼、謹慎安裝。安全措施還包括:安全意識、良好習慣、定期更新和殺毒軟件。

See all articles