《毫無障礙學Python》鄧文淵著 學習筆記
sqlite數據庫
注:需要有數據庫基礎(會用SQL語句創建表,對錶內容進行增刪改查操作即可)
sqlite安裝教程參考:https://www.runoob.com/sqlite/sqlite-installation.html
SQLite可視化管理工具參考博客(本人用的是SQLite Administrator,好像不支持utf-8編碼,用SQL語句插入中文會出現亂碼):https://blog.csdn.net/zhaoyw2008/article/details/26964247
1.導入sqlite3包
導入sqlite3包:SQLite3只是一個輕型的嵌入式數據庫引擎,佔用資源非常低,處理速度比Mysql還快,專門用於移動設備上進行適量的數據存取,它只是一個文件,不需要服務器進程
connect: 創建數據庫連接,若數據庫不存 新創數據庫;數據庫存在 直接打開連接,並返回一個connection對象
創建數據庫連接 並 關閉連接 語法:
import sqlite3
conn = sqlite3.connect(數據庫名)
conn.close()
connection對象包含的方法:
cursor() | 創建一個cursor對象,通過其對象的execute()方法 可對數據表進行 創建、增、刪、改、查操作 |
execute() | 執行SQL語句,可以完成數據表的創建、增、刪、改、查操作 |
commit() | 對數據庫進行更新 |
close() | 關閉數據庫連接 |
2.cursor() 對象執行SQL語句
import sqlite3
conn = sqlite3.connect('d:\\python_code\\Database\\student.s3db') #創建數據庫連接,連接數據庫student.s3db
cursor = conn.cursor() #創建cursor對象
#新建一個student_information數據表包含三列:sno(主鍵 非空 varchar類型長度8),sname ,sex
sqlstr = 'CREATE TABLE IF NOT EXISTS student_information ("sno" varchar(8) PRIMERY KEY NOT NULL,"sname" varchar(12),"sex" varchar(2))'
cursor.execute(sqlstr)
#新增一條記錄:插入一行數據 "20190123","Lily","f"
sqlstr = 'insert into student values("20190123","Lily","f")'
cursor.execute(sqlstr) #執行SQL語句sqlter
conn.commit() #主動更新
conn.close() #關閉數據庫連接
3.excute()方法執行SQL命令
import sqlite3
conn = sqlite3.connect('d:\\python_code\\test.sqlite') #創建數據庫連接
conn.excute(SQL命令) #執行命令
4.對數據庫進行建表,增、刪、改、查操作
import sqlite3
#新增數據表
conn = sqlite3.connect('d:\\python_code\\test.sqlite') #創建數據庫連接連接
#創建SQL語句
sqlstr = 'CREATE TABLE "table02" ("sno" TEXT PRIMARY KEY NOT NULL,"sname" TEXT not NULL)'
conn.execute(sqlstr) #執行命令
conn.commit() #更新
conn.close() #關閉連接
import sqlite3
conn = sqlite3.connect('d:\\python_code\\test.sqlite') #創建數據庫連接連接
#新增數據
sno = '20201236'
sname= 'Martin'
sqlstr = 'insert into table02 values("{}","{}")'.format(sno,sname)
conn.execute(sqlstr)
conn.commit()
conn.close()
import sqlite3
conn = sqlite3.connect('d:\\python_code\\test.sqlite') #創建數據庫連接連接
#修改數據
sqlstr = 'update table02 set sno="{}" where sno="{}"'.format('30303030','20201236')
conn.execute(sqlstr)
conn.commit()
conn.close()
import sqlite3
conn = sqlite3.connect('d:\\python_code\\test.sqlite') #創建數據庫連接連接
#刪除數據
sqlstr = 'delete from table02 where sno="{}"'.format('30303030')
conn.execute(sqlstr)
conn.commit()
conn.close()
import sqlite3
conn = sqlite3.connect('d:\\python_code\\test.sqlite') #創建數據庫連接連接
#刪除表
sqlstr = 'drop table table02'
conn.execute(sqlstr)
conn.commit()
conn.close()
5. 用cursor進行數據查詢
用connect對象的execute()方法執行SQL語句後,會返回一個cursor類對象,它是由sqlite3.cursor類生成的對象。通過cursor型對象中包含的方法可以進行數據查詢
cursor對象包含兩個方法:
- fetchall():以二維列表方式取得 表中所有符合查詢條件的記錄,若無數據返回None
- fetchone(): 以列表方式取得列表中符合查詢條件的第一條記錄,若無數據返回None
import sqlite3
conn = sqlite3.connect('d:\\python_code\\test.sqlite') #創建數據庫連接
cursor = conn.execute('select * from table01 ') #cursor是cursor類對象
rows = cursor.fetchall() #rows的數據類型爲二維列表
print(rows)
for row in rows: #將二維列表rows每一列賦值給row
print("{}\t{}".format(row[0],row[1])) #輸出rows每一列的前兩個數據,即一維列表row的前兩個數據
print()
cursor = conn.execute('select * from table01 where num=1')
rows = cursor.fetchone()
if not rows==None:
print("{}\t{}".format(rows[0],rows[1]))
test.sqlite數據庫中的表table01:
程序運行結果: