python数据库sqlite3_Python数据库之SQLite3
SQLite是一種嵌入式數(shù)據(jù)庫,它的數(shù)據(jù)庫就是一個文件。其本身是由C語言編寫,體積很小,經(jīng)常集成在各種應(yīng)用程序中,同樣也非常適合數(shù)據(jù)庫入門學(xué)習(xí)。默認(rèn)Python 2.5以上版本中已經(jīng)集成在標(biāo)準(zhǔn)庫中,無需安裝即可使用。
在學(xué)習(xí)和使用SQLite3之前,我們先明確幾個概念,為了方便理解,這里用excel類比:數(shù)據(jù)庫:你可以將其看作一個Excel工作簿,一個數(shù)據(jù)庫就是一個Excel文件;
表:表是數(shù)據(jù)庫中存放關(guān)系數(shù)據(jù)的集合,你可以看作一個Excel工作表,也就是一個sheet,通常一個數(shù)據(jù)庫中會有多個表;
那么參照Excel就可以聯(lián)想到有哪些操作了,也就是我們常說的增刪改查,比如:打開/創(chuàng)建數(shù)據(jù)庫;
創(chuàng)建/刪除/重命名表;
新增行/列;
刪除行/列;
查詢/修改字段內(nèi)容;
...SQLite3在python中是通過sqlite3模塊驅(qū)動的,所以要使用SQLite3需要先導(dǎo)入該模塊
# 導(dǎo)入sqlite3模塊
import sqlite3導(dǎo)入模塊后首先要創(chuàng)建/鏈接數(shù)據(jù)庫,然后創(chuàng)建游標(biāo)對象。
# 鏈接數(shù)據(jù)庫,若數(shù)據(jù)庫不存在則創(chuàng)建
con = sqlite3.connect("E:/Python3/123.db")
# 在內(nèi)存中創(chuàng)建數(shù)據(jù)庫
con = sqlite3.connect(":memory:")
# 創(chuàng)建游標(biāo)對象
cur = con.cursor()通過游標(biāo)對象對數(shù)據(jù)庫表進(jìn)行操作
# 新建表abc,包含id,name,age三列,sqlite可以省略類型,ID為主鍵(主鍵不能重復(fù))并且不能為空,若已有該表則報(bào)錯
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")通過游標(biāo)對象對表內(nèi)容進(jìn)行操作
# 在已有表中添加列abc,字段類型為text,若已有該列則報(bào)錯
cur.execute("ALTER TABLE mytable ADD abc TEXT")
# 修改已有列的列名稱:看文檔應(yīng)該是這么寫但一直報(bào)錯,可能是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","張無忌"),("3","謝遜"),("4","令狐沖")]
cur.executemany("INSERT INTO mytable(id,name) VALUES(?,?)",info)
# 對 seq_of_parameters 中的所有參數(shù)或映射執(zhí)行一個 SQL 命令。
# cur.executemany(sql, seq_of_parameters)
# 執(zhí)行多個 SQL 語句。它首先執(zhí)行 COMMIT 語句,然后執(zhí)行作為參數(shù)傳入的 SQL 腳本。所有的 SQL 語句應(yīng)該用分號(;)分隔。
# cur.executescript(sql_script)
# 查詢數(shù)據(jù)
cur.execute("SELECT id,name FROM mytable")
cur.execute("SELECT * FROM mytable")
# 獲取查詢結(jié)果集中所有(剩余)的行,返回一個列表
print(cur.fetchall())
# 修改記錄,在id為3的記錄中將該條記錄的name字段內(nèi)容修改為金毛獅王
cur.execute("UPDATE mytable SET name = ? where id = ?",("金毛獅王","3"))
# 修改一條記錄多個字段,在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",)) #逗號不能省,元組元素只有一個的時候一定要加逗號
print("刪除{num}行記錄".format(num = n.rowcount))操作完成后保存及關(guān)閉數(shù)據(jù)庫
# 事務(wù)提交,保存修改內(nèi)容。
con.commit()
# 事務(wù)回滾,數(shù)據(jù)庫回到上次提交保存的狀態(tài)。
con.rollback()
# 數(shù)據(jù)庫關(guān)閉,不自動提交保存。如果在關(guān)閉數(shù)據(jù)庫連接之前沒有調(diào)用 commit(),那么你的修改將會丟失!
con.close()
至此SQLite3在python中基本操作基本介紹完成了,更深入的操作可以訪問官方文檔自行研究。也可以關(guān)注我的個人公眾號JonCode獲取更多Python知識。
總結(jié)
以上是生活随笔為你收集整理的python数据库sqlite3_Python数据库之SQLite3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OPPO Pad 2 平板电脑发布:搭载
- 下一篇: python三维数据转换成二维_5大Py