Python學習五:sqlite數據庫

《毫無障礙學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對象包含兩個方法:

  1. fetchall():以二維列表方式取得 表中所有符合查詢條件的記錄,若無數據返回None
  2. 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:
在這裏插入圖片描述
程序運行結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章