數據的存儲(二)
- 2019 年 10 月 6 日
- 筆記
概要:上節簡單的介紹了數據以文本或json,或以csv的形式儲存 這節來介紹如何存在數據庫。首先,數據庫分為關係型數據庫和非關係型數據庫,比如mysql,Oracle,SQL Server等是關係型數據庫。比如redis,mongoDB是非關係型數據庫。
只以mysql為例
1.0首先我們要下載mysql數據庫和pymysql庫(在python2中導入的庫為mysqldb,python3不支持)
安裝庫的代碼:pip3 install pymysql
1.1,mysql數據庫的基本操作
創建數據庫:CREATE DATABASE 數據庫名
創建表:CREATE TABLE stuinfo (id VARCHAR(255) NOT NULL,name VARCHAR(255) NOT NULL,age INT NOT NULL,sex VARCHAR(255) NOT NULL,PRIMARY KEY(id))
以上創建了一個表名為stuinfo的表,字段有id,name,age,sex,varchar(255)是類型,not null是不能 為空。最後id為主鍵。
- 插入數據:INSERT INTO stuinfo(id,name,age,sex) values('1','張三','18','男')
- 查詢:SELECT * FROM stuinfo
- 修改:UPDATE stuinfo SET age=20 where id=1
- 刪除:DELETE FROM stuinfo WHERE name='張三'

首先導入pymysql,基本操作就不說了
connect()打開數據庫連接。這裡說一下他的參數:
- host:mysql的服務器地址,本地寫localhost
- user:用戶名
- password:密碼
- port:端口,默認為3306
- db:數據庫
- charset:連接編碼
cursor()創建一個游標對象
對應的方法有:
- exxecute():執行數據庫查詢和命令
- fetchone():獲取結果集下一行
- fetchmany(size):取到size行
- fetchall():取到剩下的所有行
- rowcount():返回受影響的行數
- close():關閉cursor
1.3創建表

過程上面也已經說的很清楚了,只是修改了一下sql語句
1.4插入數據

這裡插入數據是設定好的,我們爬蟲爬取的數據有時候返回的是字典,
那麼可以修改成這樣:

commit()方法才是提交到數據庫執行的方法,插入,修改,刪除,都需要調用該方法才會生效。
roLLback()如果發生異常,就會數據回滾。
1.5修改
執行的方法都一樣,只是sql語句發生了改變,參數發生了改變
只需要sql修改成'UPDATA stuinfo SET age=%s WHERE name=%s'
同時我們也可以這樣寫,在數據存在的時候修改,數據不存在的時候插入
(實例存在的時候將李四的年齡從20修改成25):
在修改之前的數據是這樣的:

修改之後:

完整的寫法如下:

在添加的基礎上添加了ON DUPLICATE KEY UPDATE,表示有就更新,沒有就插入。
我們打印一下sql語句,變成了

所以在添加的時候變成值變成了*2
1.6刪除
刪除直接執行刪除語句就好
table='stuinfo'
cond="name='張三'"
sql='deleta from {stuinfo} where {cond}'.format(table=table,cond=cond)
即可。
1.8查詢
查詢很簡單,簡單實例如下

這是一個一個的取出來
也可以這樣取:

這是一下全部出來,推介使用上一種。