實際開發過程當中,數據的存儲過程主要有三種:
1.將數據存儲到內存當中
優點:使用方便,讀寫速度快 缺點:程序關閉的時候 內存釋放 數據消失
2.將數據寫到文件當中
優點:數據存儲是永久性的,不易丟失 缺點:打開關閉文件 操作數據比較麻煩
3.將數據存儲到數據庫當中
優點:數據存儲是永久性的,操作也比較方便 缺點:數據庫學習難度比較大
數據庫按照性質分爲兩大類:
1.關係型數據庫,數據和數據之間存在這廣泛的聯繫 mysql sqlite
優勢:通過一個數據可以訪問到其他的數據
2.非關係型數據庫,數據和數據之間沒有關係 MongoDB redis
優勢:數據爲單獨的,數據之間的耦合度比較低,對數據進行增刪改不會影響其他數據
按照數據庫規模大小來分 有四種:
1.大型數據庫:oracle 一般用於大型商業公司 例如淘寶京東
2.中型數據庫:SQLserver 使用非常廣泛的數據庫
3.小型數據庫:mysql 一般用於小的產品公司或者公司內部數據庫
4.微型數據庫:sqlite 大小大概只有4M左右 經常用於移動端
python中用得是sqlite
一、連接和創建數據庫:
1.引入sqlite3
# 引入sqlite3
import sqlite3
2.創建數據庫和創建表:
語法:cursor.execute() 執行
create table if not exists 表名 (字段名 類型,字段名 類型,...)
# 連接到一個數據庫 如果數據庫存在則連接
# 如果不存在則創建
con = sqlite3.connect('myDb')
# # 設置數據庫光標 光標是用來執行數據庫命令的
cursor = con.cursor()
# execute執行 如果mtTable表不存在創建 mtTable表 (字段名)
cursor.execute('CREATE TABLE IF NOT EXISTS mtTable (name text,sex text,age int,height int)')
# commit提交
con.commit()
創建完成之後 文件下會有個這樣的圖標
找到 View按照下圖方式點擊database 可在編譯器右邊出現一個數據庫的控制窗口,將創建的數據庫拖進去即可查看數據庫的信息
二、數據庫的操作:增刪改查
1. 增:要注意添加的內容要與數據庫的字段名相對應,一次只能增加一條數據
cursor.execute('INSERT INTO mtTable (name,sex,age,height) VALUES ("jerry","男",20,150)')
# commit提交
con.commit()
2.刪:刪除name='jerry'的數據
cursor.execute('DELETE FROM mtTable WHERE name = "jerry"')
con.commit()
3.改:set 設置要改成什麼, where後面是條件
cursor.execute('UPDATE mtTable SET name="jerry" WHERE name="tom"')
con.commit()
4.查:select * from 表名 where 條件
cursor.execute('SELECT * FROM mtTable')
# fetchall 找到所有的結果 返回值是個列表
result = cursor.fetchall()
# fetchone 找到結果的第一個結果 返回值是一個元組
result = cursor.fetchone()
# fetchmany 找到指定數量的結果
result = cursor.fetchmany(1)
print(result)
5.數據庫模糊查詢:
import sqlite3
con = sqlite3.connect('nameDB')
cursor = con.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS name_table(name text)')
con.commit()
cursor.execute('INSERT INTO name_table(name) VALUES ("王花")')
con.commit()
# cursor.execute('INSERT INTO name_table(name) VALUES ("張三")')
# con.commit()
X_表示找到以X開頭的,後面只有一位的數據
_X表示找到以X結尾的,前面只有一位的數據
_ _多少位 就表示找到有幾位數據
cursor.execute('SELECT * FROM name_table WHERE name LIKE "張_"')
結果爲:
>>張三
%X 表示找到所有以X結束的數據
X% 表示找到所有以X開始的數據
%X% 表示找到所有包含 X 的數據
# cursor.execute('SELECT * FROM name_table WHERE name LIKE "王%"')
print(cursor.fetchall())
結果爲:
>>['王花']
cursor.execute('SELECT * FROM name_table WHERE name LIKE "%花%"')
print(cursor.fetchall())
結果爲:
>>['王花]'