欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Pymysql實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的示例

 更新時(shí)間:2023年03月17日 09:27:36   作者:Itmastergo  
本文主要介紹了Python Pymysql實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

Python 連接并操作 MySQL 數(shù)據(jù)庫(kù),主要通過(guò) Pymysql 模塊實(shí)現(xiàn)。這里講解如何將抓取的數(shù)據(jù)存儲(chǔ)至 MySQL 數(shù)據(jù)庫(kù)。

創(chuàng)建存儲(chǔ)數(shù)據(jù)表

首先您應(yīng)該確定您的計(jì)算機(jī)上已經(jīng)安裝了 MySQL 數(shù)據(jù)庫(kù),然后再進(jìn)行如下操作:

# 1. 連接到mysql數(shù)據(jù)庫(kù)
mysql -h127.0.0.1 -uroot -p123456
# 2. 建庫(kù)
create database maoyandb charset utf8;
# 3. 切換數(shù)據(jù)庫(kù)
use maoyandb;
# 4. 創(chuàng)建數(shù)據(jù)表
create table filmtab(
name varchar(100),
star varchar(400),
time varchar(30)
);

Pymysql基本使用

1) 連接數(shù)據(jù)庫(kù)

db = pymysql.connect('localhost','root','123456','maoyandb')

參數(shù)說(shuō)明:

  • localhost:本地 MySQL 服務(wù)端地址,也可以是遠(yuǎn)程數(shù)據(jù)庫(kù)的 IP 地址。
  • root:連接數(shù)據(jù)所使用的用戶名。
  • password:連接數(shù)據(jù)庫(kù)使用的密碼,本機(jī) MySQL 服務(wù)端密碼“123456”。
  • db:連接的數(shù)據(jù)庫(kù)名稱。

2) 創(chuàng)建cursor對(duì)象

cursor = db.cursor()

3) 執(zhí)行sql命令

execute() 方法用來(lái)執(zhí)行 SQL 語(yǔ)句。如下所示:

#第一種方法:編寫sql語(yǔ)句,使用占位符傳入相應(yīng)數(shù)據(jù)
sql = "insert into filmtab values('%s','%s','%s')" % ('刺殺,小說(shuō)家','雷佳音','2021')
cursor.excute(sql)
第二種方法:編寫sql語(yǔ)句,使用列表傳參方式
sql = 'insert into filmtab values(%s,%s,%s)'
cursor.execute(sql,['刺殺,小說(shuō)家','雷佳音','2021'])

4) 提交數(shù)據(jù)

db.commit()

5) 關(guān)閉數(shù)據(jù)庫(kù)

cursor.close()
db.close()

完整的代碼如下所示:

# -*-coding:utf-8-*-
import pymysql
#創(chuàng)建對(duì)象
db = pymysql.connect('localhost','root','123456','maoyandb')
cursor = db.cursor()
# sql語(yǔ)句執(zhí)性,單行插入
info_list = ['刺殺,小說(shuō)家','雷佳音,楊冪','2021-2-12']
sql = 'insert into movieinfo values(%s,%s,%s)'
#列表傳參
cursor.execute(sql,info_list)
db.commit()
# 關(guān)閉
cursor.close()
db.close()

查詢數(shù)據(jù)結(jié)果,如下所示:

mysql> select * from movieinfo;
+-------------+-------------------+-----------+
| name        | star              | time      |
+-------------+-------------------+-----------+
| 刺殺,小說(shuō)家   | 雷佳音,楊冪         | 2021-2-12 |
+-------------+-------------------+-----------+
1 rows in set (0.01 sec)

還有一種效率較高的方法,使用 executemany() 可以同時(shí)插入多條數(shù)據(jù)。示例如下:

db = pymysql.connect('localhost','root','123456','maoyandb',charset='utf8')
cursor = db.cursor()
# sql語(yǔ)句執(zhí)性,列表元組
info_list = [('我不是藥神','徐崢','2018-07-05'),('你好,李煥英','賈玲','2021-02-12')]
sql = 'insert into movieinfo values(%s,%s,%s)'
cursor.executemany(sql,info_list)
db.commit()
# 關(guān)閉
cursor.close()
db.close()

查詢插入結(jié)果,如下所示:

mysql> select * from movieinfo;
+-------------+-------------------+------------+
| name        | star              | time       |
+-------------+-------------------+------------+
| 我不是藥神  | 徐崢              | 2018-07-05 |
| 你好,李煥英 | 賈玲              | 2021-02-12 |
+-------------+-------------------+------------+
2 rows in set (0.01 sec)

修改爬蟲程序

下面修改一下爬蟲程序,將抓取下來(lái)的數(shù)據(jù)存儲(chǔ)到 MySQL 數(shù)據(jù)庫(kù)。如下所示:

# coding=gbk
from urllib import request
import re
import time
import random
from ua_info import ua_list
import pymysql
class MaoyanSpider(object):
    def __init__(self):
        #初始化屬性對(duì)象
        self.url = 'https://maoyan.com/board/4?offset={}'
        #數(shù)據(jù)庫(kù)連接對(duì)象
        self.db = pymysql.connect(
            'localhost','root','123456','maoyandb',charset='utf8')
        #創(chuàng)建游標(biāo)對(duì)象
        self.cursor = self.db.cursor()
    def get_html(self,url):
        headers = {'User-Agent':random.choice(ua_list)}
        req = request.Request(url=url,headers=headers)
        res = request.urlopen(req)
        html = res.read().decode()
        # 直接解析
        self.parse_html(html)
    def parse_html(self,html):
        re_bds = '<div class="movie-item-info">.*?title="(.*?)".*?<p class="star">(.*?)</p>.*?class="releasetime">(.*?)</p>'
        pattern = re.compile(re_bds,re.S)
        r_list = pattern.findall(html)
        self.save_html(r_list)
    def save_html(self, r_list):
        L = []
        sql = 'insert into movieinfo values(%s,%s,%s)'
        # 整理數(shù)據(jù)
        for r in r_list:
            t = (
                r[0].strip(),
                r[1].strip()[3:],
                r[2].strip()[5:15]
            )
            L.append(t)
            print(L)
        # 一次性插入多條數(shù)據(jù) L:[(),(),()]
        try:
            self.cursor.executemany(sql,L)
            # 將數(shù)據(jù)提交數(shù)據(jù)庫(kù)
            self.db.commit()
        except:
            # 發(fā)生錯(cuò)誤則回滾
            self.db.rollback()
    def run(self):
        for offset in range(0,11,10):
            url = self.url.format(offset)
            self.get_html(url)
            time.sleep(random.uniform(1,3))
        # 斷開游標(biāo)與數(shù)據(jù)庫(kù)連接
        self.cursor.close()
        self.db.close()
if __name__ == '__main__':
    start=time.time()
    spider = MaoyanSpider()
    spider.run()
    end=time.time()
    print("執(zhí)行時(shí)間:%.2f" % (end-start))

數(shù)據(jù)庫(kù)查詢存儲(chǔ)結(jié)果,如下所示:

mysql> select * from movieinfo;
+----------------+----------------------------------------------------------+------------+
| name           | star                                                     | time       |
+----------------+----------------------------------------------------------+------------+
| 我不是藥神     | 徐崢,周一圍,王傳君                                               | 2018-07-05 |
| 肖申克的救贖   | 蒂姆·羅賓斯,摩根·弗里曼,鮑勃·岡頓                                  | 1994-09-10 |
| 綠皮書         | 維果·莫騰森,馬赫沙拉·阿里,琳達(dá)·卡德里尼                            | 2019-03-01 |
| 海上鋼琴師     | 蒂姆·羅斯,比爾·努恩,克蘭倫斯·威廉姆斯三世                           | 2019-11-15 |
| 小偷家族       | 中川雅也,安藤櫻,松岡茉優(yōu)                                          | 2018-08-03 |
| 霸王別姬       | 張國(guó)榮,張豐毅,鞏俐                                               | 1993-07-26 |
| 哪吒之魔童降世 | 呂艷婷,囧森瑟夫,瀚墨                                              | 2019-07-26 |
| 美麗人生       | 羅伯托·貝尼尼,朱斯蒂諾·杜拉諾,賽爾喬·比尼·布斯特里克                  | 2020-01-03 |
| 這個(gè)殺手不太冷 | 讓·雷諾,加里·奧德曼,娜塔莉·波特曼                                   | 1994-09-14 |
| 盜夢(mèng)空間       | 萊昂納多·迪卡普里奧,渡邊謙,約瑟夫·高登-萊維特                        | 2010-09-01 |
+----------------+----------------------------------------------------------+------------+
10 rows in set (0.01 sec)

到此這篇關(guān)于Python Pymysql實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的示例的文章就介紹到這了,更多相關(guān)Pymysql 數(shù)據(jù)存儲(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django中Middleware中的函數(shù)詳解

    Django中Middleware中的函數(shù)詳解

    這篇文章主要介紹了Django中Middleware中的函數(shù)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python?+?Selenium?實(shí)現(xiàn)模擬登錄jd實(shí)例分享

    Python?+?Selenium?實(shí)現(xiàn)模擬登錄jd實(shí)例分享

    這篇文章主要介紹了Python?+?Selenium?實(shí)現(xiàn)模擬登錄jd實(shí)例分享的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 基于Python實(shí)現(xiàn)視頻去重小工具

    基于Python實(shí)現(xiàn)視頻去重小工具

    這篇文章主要為大家詳細(xì)介紹了如何通過(guò)Python語(yǔ)言編寫簡(jiǎn)單的視頻去重小工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起嘗試一下
    2023-03-03
  • 淺談Python flask框架

    淺談Python flask框架

    這篇文章主要介紹了Python flask框架,主要以對(duì)flask 微web框架優(yōu)勢(shì)特點(diǎn)、demo web應(yīng)用程序程序步驟以及對(duì)flask模塊中路由和模版兩個(gè)功能進(jìn)行基本了解。具有一定的參考價(jià)值,需要的朋友可以參考一下
    2021-11-11
  • Python中的函數(shù)參數(shù)(位置參數(shù)、默認(rèn)參數(shù)、可變參數(shù))

    Python中的函數(shù)參數(shù)(位置參數(shù)、默認(rèn)參數(shù)、可變參數(shù))

    這篇文章主要介紹了Python中的函數(shù)參數(shù):位置參數(shù)、默認(rèn)參數(shù)、可變參數(shù)、關(guān)鍵字參數(shù)和命名關(guān)鍵字參數(shù),需要的小伙伴可以參考下面文章內(nèi)容
    2021-09-09
  • Python光學(xué)仿真學(xué)習(xí)衍射算法初步理解

    Python光學(xué)仿真學(xué)習(xí)衍射算法初步理解

    這篇文章主要為大家介紹了Python光學(xué)仿真學(xué)習(xí)中對(duì)衍射算法的初步理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • Python基礎(chǔ)之列表常見(jiàn)操作經(jīng)典實(shí)例詳解

    Python基礎(chǔ)之列表常見(jiàn)操作經(jīng)典實(shí)例詳解

    這篇文章主要介紹了Python基礎(chǔ)之列表常見(jiàn)操作,結(jié)合實(shí)例形式詳細(xì)分析了Python列表創(chuàng)建方式、內(nèi)置函數(shù)與相關(guān)使用技巧,需要的朋友可以參考下
    2020-02-02
  • python3實(shí)現(xiàn)的zip格式壓縮文件夾操作示例

    python3實(shí)現(xiàn)的zip格式壓縮文件夾操作示例

    這篇文章主要介紹了python3實(shí)現(xiàn)的zip格式壓縮文件夾操作,結(jié)合實(shí)例形式分析了Python3基于zipfile模塊實(shí)現(xiàn)zip格式文件壓縮的相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • python模擬鼠標(biāo)拖動(dòng)操作的方法

    python模擬鼠標(biāo)拖動(dòng)操作的方法

    這篇文章主要介紹了python模擬鼠標(biāo)拖動(dòng)操作的方法,實(shí)例分析了Python鼠標(biāo)操作及鍵位操作的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • python變量命名的7條建議

    python變量命名的7條建議

    這篇文章主要介紹了python變量命名的7條建議,如何給變量命名,如何讓它變得有意義成了程序員不可逾越的難題,需要的朋友可以參考下
    2019-07-07

最新評(píng)論