日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python数据库sqlite3_Python数据库之SQLite3

發(fā)布時(shí)間:2023/12/19 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python数据库sqlite3_Python数据库之SQLite3 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SQLite是一種嵌入式數(shù)據(jù)庫(kù),它的數(shù)據(jù)庫(kù)就是一個(gè)文件。其本身是由C語(yǔ)言編寫,體積很小,經(jīng)常集成在各種應(yīng)用程序中,同樣也非常適合數(shù)據(jù)庫(kù)入門學(xué)習(xí)。默認(rèn)Python 2.5以上版本中已經(jīng)集成在標(biāo)準(zhǔn)庫(kù)中,無(wú)需安裝即可使用。

在學(xué)習(xí)和使用SQLite3之前,我們先明確幾個(gè)概念,為了方便理解,這里用excel類比:數(shù)據(jù)庫(kù):你可以將其看作一個(gè)Excel工作簿,一個(gè)數(shù)據(jù)庫(kù)就是一個(gè)Excel文件;

表:表是數(shù)據(jù)庫(kù)中存放關(guān)系數(shù)據(jù)的集合,你可以看作一個(gè)Excel工作表,也就是一個(gè)sheet,通常一個(gè)數(shù)據(jù)庫(kù)中會(huì)有多個(gè)表;

那么參照Excel就可以聯(lián)想到有哪些操作了,也就是我們常說(shuō)的增刪改查,比如:打開(kāi)/創(chuàng)建數(shù)據(jù)庫(kù);

創(chuàng)建/刪除/重命名表;

新增行/列;

刪除行/列;

查詢/修改字段內(nèi)容;

...SQLite3在python中是通過(guò)sqlite3模塊驅(qū)動(dòng)的,所以要使用SQLite3需要先導(dǎo)入該模塊

# 導(dǎo)入sqlite3模塊

import sqlite3導(dǎo)入模塊后首先要?jiǎng)?chuàng)建/鏈接數(shù)據(jù)庫(kù),然后創(chuàng)建游標(biāo)對(duì)象。

# 鏈接數(shù)據(jù)庫(kù),若數(shù)據(jù)庫(kù)不存在則創(chuàng)建

con = sqlite3.connect("E:/Python3/123.db")

# 在內(nèi)存中創(chuàng)建數(shù)據(jù)庫(kù)

con = sqlite3.connect(":memory:")

# 創(chuàng)建游標(biāo)對(duì)象

cur = con.cursor()通過(guò)游標(biāo)對(duì)象對(duì)數(shù)據(jù)庫(kù)表進(jìn)行操作

# 新建表abc,包含id,name,age三列,sqlite可以省略類型,ID為主鍵(主鍵不能重復(fù))并且不能為空,若已有該表則報(bào)錯(cuò)

cur.execute("CREATE TABLE abc(id TEXT PRIMARY KEY NOT NULL,name TEXT,age INT)")

# 新建表xyz,若已有該表則忽略,

cur.execute("CREATE TABLE IF NOT EXISTS xyz(id TEXT PRIMARY KEY NOT NULL,name TEXT,age INT)")

# 刪除表xyz

cur.execute("DROP TABLE xyz")

# 修改已有表名稱,abc>>mytable

cur.execute("ALTER TABLE abc RENAME TO mytable")通過(guò)游標(biāo)對(duì)象對(duì)表內(nèi)容進(jìn)行操作

# 在已有表中添加列abc,字段類型為text,若已有該列則報(bào)錯(cuò)

cur.execute("ALTER TABLE mytable ADD abc TEXT")

# 修改已有列的列名稱:看文檔應(yīng)該是這么寫但一直報(bào)錯(cuò),可能是python api 中 alter方法并不支持重命名列

# con.execute("ALTER TABLE mytable RENAME COLUMN abc TO sex")

# 在表mytable中插入一條記錄,兩種方法,一般用第二種方法,較為安全

cur.execute("INSERT INTO mytable (id,name) VALUES ('0','狗蛋')")

cur.execute("INSERT INTO mytable(id,name) VALUES(?,?)",("1","張三豐"))

# 在表mytable中插入一條記錄,若存在即忽略

cur.execute("INSERT OR IGNORE INTO mytable (id,name) VALUES ('0','狗蛋')")

# 在表mytable中插入多條記錄

info = [("2","張無(wú)忌"),("3","謝遜"),("4","令狐沖")]

cur.executemany("INSERT INTO mytable(id,name) VALUES(?,?)",info)

# 對(duì) seq_of_parameters 中的所有參數(shù)或映射執(zhí)行一個(gè) SQL 命令。

# cur.executemany(sql, seq_of_parameters)

# 執(zhí)行多個(gè) SQL 語(yǔ)句。它首先執(zhí)行 COMMIT 語(yǔ)句,然后執(zhí)行作為參數(shù)傳入的 SQL 腳本。所有的 SQL 語(yǔ)句應(yīng)該用分號(hào)(;)分隔。

# cur.executescript(sql_script)

# 查詢數(shù)據(jù)

cur.execute("SELECT id,name FROM mytable")

cur.execute("SELECT * FROM mytable")

# 獲取查詢結(jié)果集中所有(剩余)的行,返回一個(gè)列表

print(cur.fetchall())

# 修改記錄,在id為3的記錄中將該條記錄的name字段內(nèi)容修改為金毛獅王

cur.execute("UPDATE mytable SET name = ? where id = ?",("金毛獅王","3"))

# 修改一條記錄多個(gè)字段,在id為3的記錄中將該條記錄的name字段內(nèi)容修改為金毛獅王,age改為44

cur.execute("UPDATE mytable SET name = ?,age = ? where id = ?",("金毛獅王",44,"3"))

# 刪除整條記錄

n = cur.execute("delete from mytable where id=?",("1",)) #逗號(hào)不能省,元組元素只有一個(gè)的時(shí)候一定要加逗號(hào)

print("刪除{num}行記錄".format(num = n.rowcount))操作完成后保存及關(guān)閉數(shù)據(jù)庫(kù)

# 事務(wù)提交,保存修改內(nèi)容。

con.commit()

# 事務(wù)回滾,數(shù)據(jù)庫(kù)回到上次提交保存的狀態(tài)。

con.rollback()

# 數(shù)據(jù)庫(kù)關(guān)閉,不自動(dòng)提交保存。如果在關(guān)閉數(shù)據(jù)庫(kù)連接之前沒(méi)有調(diào)用 commit(),那么你的修改將會(huì)丟失!

con.close()

至此SQLite3在python中基本操作基本介紹完成了,更深入的操作可以訪問(wèn)官方文檔自行研究。也可以關(guān)注我的個(gè)人公眾號(hào)JonCode獲取更多Python知識(shí)。

總結(jié)

以上是生活随笔為你收集整理的python数据库sqlite3_Python数据库之SQLite3的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。