實戰|教你用Python玩轉Mysql

Python研究者發表於2021-06-06

爬蟲採集下來的資料除了儲存在文字檔案、excel之外,還可以儲存在資料集,如:Mysql,redis,mongodb等,今天辰哥就來教大家如何使用Python連線Mysql,並結合爬蟲為大家講解。

前提這裡預設大家已經安裝好mysql

01 Mysql簡介

mysql是關係型資料庫,支援大型的資料庫,可以處理擁有上千萬條記錄的大型資料庫。通過爬蟲採集的資料集儲存到mysql後,可以藉助mysql的關聯查詢將相關的資料一步取出。具體的作用這裡就不贅述了,下面開始進入實際操作。

1.安裝pymysql

通過下面這個命令進行安裝

pip install pymysql

pymysql庫:Python3連結mysql

備註:

ps:MYSQLdb只適用於python2.x

python3不支援MYSQLdb,取而代之的是pymysql

執行會報:ImportError:No module named 'MYSQLdb'

2.python連線mysql

import pymysql as pmq
#connect(ip.user,password,dbname)
con = pmq.connect('localhost','root','123456','python_chenge')
#操作遊標
cur = con.cursor()

localhost是本機ip,這裡用localhost表示是當前本機,否則將localhost改為對應的資料庫ip。

root是資料庫使用者名稱,123456是資料庫密碼,python_chenge是資料庫名。

圖上的資料庫python_chenge已經建立好(建好之後,才能用上面程式碼去連線),建好之後,當前是沒有表的,現在開始用Python進行建表,插入、查詢,修改,刪除等操作(結合爬蟲去講解

02 建表

在儲存之前,先通過python建立表,欄位有四個(一個主鍵+電影名稱,連結,評分

# 建立 movie 表
movie_sql= '''
        create table movie(
            id int AUTO_INCREMENT  primary key not null,
            title varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci  not null,
            url varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci  not null,
            rate float  not null
        )
'''
# 執行sql語句
cur.execute(movie_sql)
# 提交到資料庫執行
con.commit()


建立表movie,欄位分別為(id ,title ,url ,rate ),CHARACTER SET utf8 COLLATE utf8_general_ci是字串編碼設定為utf8格式

id是主鍵primary key,int型別,AUTO_INCREMENT自增,非空not null

title,url 是字串型別varchar(100),同樣非空

評分rate 是帶小數的數字,所以是float,同樣非空

03 插入資料

爬蟲已經採集到資料,python已經建好表,接著可以將採集的資料插入到資料庫,這裡介紹兩種方式

### 插入資料
def insert(title,url,rate):
    # 插入資料一
    #cur.execute("INSERT INTO movie(title,url,rate) VALUES('"+str(title)+"','"+str(url)+"',"+str(rate)+")")
    # 插入資料二
    sql = "INSERT INTO movie(title,url,rate) VALUES('"+str(title)+"','"+str(url)+"',"+str(rate)+")"
    cur.execute(sql)
    # 提交到資料庫執行
    con.commit()    

id是自增的,所以不需要在傳值進去。

定義好插入資料庫方法後,開始往資料庫進行儲存

for i in json_data['subjects']:
    insert(i['title'],i['url'],i['rate'])

04 查詢

1.查詢所有

查詢表中所有資料

# 查詢
cur.execute('select * from movie')
results = cur.fetchall()
for row in results:
    Id = row[0]
    title = row[1]
    print("id=%s,title=%s" % (Id, title))

2.查詢指定的資料

比如查詢標題為:唐人街3這一條資料的所有欄位

#查詢單條
cur.execute('select * from movie where title="唐人街探案3"')
results = cur.fetchall()
for row in results:
    Id = row[0]
    title = row[1]
    url = row[2]
    rate = row[3]
    print("id=%s,title=%s,url=%s,rate=%s" % (Id, title,url,rate))

05 更新修改

更新資料,還是以上面:唐人街3為例,id為7,將唐人街3評分從5.5改為6

### 更新
def update():
    sql = "update movie set rate='6' where Id = {0}".format(7)
    cur.execute(sql)
    con.commit()


同時看一下資料庫

06 刪除

同樣還是以唐人街為例,其id為7,刪除的話我們們可以更新id去刪除

def delete(Id):
    sql = "delete from movie where Id = {0}".format(Id)
    cur.execute(sql)
    con.commit()

刪除之後,就沒有第7條資料了,說明刪除成功

07 小結

今天的技術講解文章就到此結束,主要是將瞭如何通過python去連線mysql,並進行建表,插入資料,查詢,更新修改和刪除。(乾貨文章,推薦收藏

相關文章