小帥b說過
在這幾篇中會着重說說將爬取下來的數據進行存儲
上次我們說了一種 csv 的存儲方式
這次主要來說說怎么將爬取下來的數據保存到 MySQL 數據庫
接下來就是
學習python的正確姿勢
真香假設
本文假設你已經安裝好MySQL
並且懂了一些 MySQL 的使用
例如簡單“增刪改查”的語句
如果你還沒安裝 MySQL
可以到以下鏈接去安裝一下
https://www.mysql.com/downloads/
在你的 MySQL 中創建一個數據庫吧
就叫...
AV-Idol
用 root 的身份進入你的 MySQL
sudo mysql -u root -p
輸入 MySQL 的用戶名密碼之后
就可以開始操作 MySQL 啦
我們來創建一個數據庫
如果 avIdol 這個數據庫不存在於我們的 MySQL 里面
那就創建一個出來
mysql> create database if not exists avIdol;
Query OK, 1 row affected (0.01 sec)
這樣
我們就創建出一個數據庫了
接下來
我們就使用 python 來操作這個數據庫吧
我們需要使用到 pymysql 這個庫
專門用來操作 MySQL 的
可以用 pip 安裝一下
pip install pymysql
接下來我們就連接到我們剛剛創建的數據庫
然后在這個數據庫里面創建一張 beautyGirls 表
專門用來存放漂亮美眉的信息
import pymysql
# 使用 connect 方法,傳入數據庫地址,賬號密碼,數據庫名就可以得到你的數據庫對象
db = pymysql.connect("你的數據庫地址", "數據庫賬號",
"數據庫密碼", "avIdol")
# 接着我們獲取 cursor 來操作我們的 avIdol 這個數據庫
cursor = db.cursor()
# 比如我們來創建一張數據表
sql = """create table beautyGirls (
name char(20) not null,
age int)"""
cursor.execute(sql)
# 最后我們關閉這個數據庫的連接
db.close()
運行一下
沒報什么錯就說明我們成功創建數據表了
我們回到數據庫看下是否創建成功
通過 show tables
可以看到我們數據庫成功創建了 beautyGirls 這張婊,哦不,表
通過 show full columns from beautyGirls;
可以看到我們在這張表中創建了 name 和 age 這兩個字段
有了數據庫和數據表了
那么接下來我們就往數據庫插入數據看看
import pymysql
# 使用 connect 方法,傳入數據庫地址,賬號密碼,數據庫名就可以得到你的數據庫對象
db = pymysql.connect("localhost", "root", "root", "avIdol")
# 接着我們獲取 cursor 來操作我們的 avIdol 這個數據庫
cursor = db.cursor()
# 插入一條記錄
sql = "insert into beautyGirls(name, age) values ('Mrs.cang', 18)"
try:
cursor.execute(sql)
db.commit()
except:
# 回滾
db.rollback()
# 最后我們關閉這個數據庫的連接
db.close()
再來數據庫查詢一下這張表
可以看到
蒼老師的數據就被我們插進來了
當你使用 pymysql 對數據進行更新的時候
記得調用
db.commit()
這樣才會執行到哦
知道如何創建數據表、插入數據
那么對於更新數據以及刪除數據
也是同樣的道理
只是 sql 語句不同而已
比如刪除 18 歲的蒼老師
sql = "delete from beautyGirls where age = '%d'" % (18)
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
可能你在操作數據庫的時候
做一些數據的更新或者添加
有些數據在添加過程可能出現異常
為了讓我們的數據能夠完全的添加
可以使用
db.rollback()
回滾操作
這樣才能讓我們的事務具有一致性
當然
我們也可以將 csv 中的內容插入到 MySQL 中
就拿上次我們生成的 xsb.csv 文件來說
我們把這里面的內容插到 xsb 數據庫吧
還是一樣,我們來創建一個叫做 xsb 的數據庫
並且把字符集設置為 UFT-8 ,防止中文亂碼
CREATE DATABASE xsb CHARACTER SET utf8 COLLATE utf8_general_ci;
接着創張帥b表
mysql> CREATE TABLE xsb (name char(20), age char(20), length char(20));
Query OK, 0 rows affected (0.34 sec)
回到代碼來
這次我們安裝一下 mysql 的 python 客戶端
pip install mysqlclient
使用 sqlalchemy 來連接我們的數據庫
然后就可以使用代碼將 csv 文件的內容插到 xsb 這張表了
import pandas as pd
from sqlalchemy import create_engine
df = pd.read_csv('xsb.csv')
# 當engine連接的時候我們就插入數據
engine = create_engine('mysql://root@localhost/xsb?charset=utf8')
with engine.connect() as conn, conn.begin():
df.to_sql('xsb', conn, if_exists='replace')
運行一下
然后打開我們剛剛創建的 xsb 數據庫查詢一下
可以看到
我們就將 csv 中的內容插入到數據庫啦
ok
以上就是使用 python 操作數據庫的具體操作
以后小帥b在爬蟲項目例子中還會提及 MySQL
那么
我們下回見
peace