數據的存儲(二)

  • 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查詢

查詢很簡單,簡單實例如下

這是一個一個的取出來

也可以這樣取:

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