Wie verwende ich Python Pymysql zur Datenspeicherung?

WBOY
Freigeben: 2023-04-23 20:34:15
nach vorne
1175 Leute haben es durchsucht

Python verbindet und betreibt die MySQL-Datenbank, hauptsächlich über das Pymysql-Modul. Hier erklären wir, wie Sie die erfassten Daten in einer MySQL-Datenbank speichern.

Erstellen Sie eine Speicherdatentabelle

Stellen Sie zunächst sicher, dass die MySQL-Datenbank auf Ihrem Computer installiert ist, und gehen Sie dann wie folgt vor:

# 1. 连接到mysql数据库
mysql -h227.0.0.1 -uroot -p123456
# 2. 建库
create database maoyandb charset utf8;
# 3. 切换数据库
use maoyandb;
# 4. 创建数据表
create table filmtab(
name varchar(100),
star varchar(400),
time varchar(30)
);
Nach dem Login kopieren

Grundlegende Verwendung von Pymysql

1) Stellen Sie eine Verbindung zur Datenbank her

db = pymysql.connect('localhost','root','123456','maoyandb')
Nach dem Login kopieren

Parameterbeschreibung:

  • localhost: Die lokale MySQL-Serveradresse oder die IP-Adresse der Remote-Datenbank.

  • root: der Benutzername, der für die Verbindung zu den Daten verwendet wird.

  • Passwort: Das Passwort, das zum Herstellen einer Verbindung zur Datenbank verwendet wird. Das lokale MySQL-Server-Passwort lautet „123456“.

  • db: Der Name der verbundenen Datenbank.

2) Cursorobjekt erstellen

cursor = db.cursor()
Nach dem Login kopieren

3) SQL-Befehl ausführen

execute()-Methode wird zum Ausführen von SQL-Anweisungen verwendet. Wie unten gezeigt:

#第一种方法:编写sql语句,使用占位符传入相应数据
sql = "insert into filmtab values('%s','%s','%s')" % ('刺杀,小说家','雷佳音','2021')
cursor.excute(sql)
第二种方法:编写sql语句,使用列表传参方式
sql = 'insert into filmtab values(%s,%s,%s)'
cursor.execute(sql,['刺杀,小说家','雷佳音','2021'])
Nach dem Login kopieren

4) Daten senden

db.commit()
Nach dem Login kopieren

5) Datenbank schließen

cursor.close()
db.close()
Nach dem Login kopieren

Der vollständige Code lautet wie folgt:

# -*-coding:utf-8-*-
import pymysql
#创建对象
db = pymysql.connect('localhost','root','123456','maoyandb')
cursor = db.cursor()
# sql语句执性,单行插入
info_list = ['刺杀,小说家','雷佳音,杨幂','2021-2-12']
sql = 'insert into movieinfo values(%s,%s,%s)'
#列表传参
cursor.execute(sql,info_list)
db.commit()
# 关闭
cursor.close()
db.close()
Nach dem Login kopieren

Fragen Sie die Datenergebnisse wie folgt ab:

mysql> select * from movieinfo;
+------------+-------------------+----------+
| |.                                                       |. Lei Jiayin, 1.2 2 |
+-------------+----------- -- -----+-----------+
1 Zeilen im Satz (0,01 Sek.)

Es gibt auch eine effizientere Methode, nämlich die Verwendung vonexecutemany() zum Einfügen mehrerer Datenelemente gleichzeitig. Ein Beispiel ist wie folgt:
db = pymysql.connect('localhost','root','123456','maoyandb',charset='utf8')
cursor = db.cursor()
# sql语句执性,列表元组
info_list = [('我不是药神','徐峥','2018-07-05'),('你好,李焕英','贾玲','2021-02-12')]
sql = 'insert into movieinfo values(%s,%s,%s)'
cursor.executemany(sql,info_list)
db.commit()
# 关闭
cursor.close()
db.close()
Nach dem Login kopieren

Fragen Sie die Einfügungsergebnisse wie folgt ab:

mysql> -- --------+----------------+
|. Name                                                                                                                   ----------------+- -----+

|. Ich bin nicht der Gott der Medizin | 12.02.2021 |
+-------------+-------------------+--- ----- ----+
2 Zeilen im Satz (0,01 Sek.)


Ändern Sie das Crawler-Programm

Ändern Sie nun das Crawler-Programm, um die erfassten Daten in der MySQL-Datenbank zu speichern. Wie unten gezeigt:

# 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):
        #初始化属性对象
        self.url = 'https://maoyan.com/board/4?offset={}'
        #数据库连接对象
        self.db = pymysql.connect(
            'localhost','root','123456','maoyandb',charset='utf8')
        #创建游标对象
        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 = &#39;<div class="movie-item-info">.*?title="(.*?)".*?<p class="star">(.*?)</p>.*?class="releasetime">(.*?)</p>&#39;
        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 = &#39;insert into movieinfo values(%s,%s,%s)&#39;
        # 整理数据
        for r in r_list:
            t = (
                r[0].strip(),
                r[1].strip()[3:],
                r[2].strip()[5:15]
            )
            L.append(t)
            print(L)
        # 一次性插入多条数据 L:[(),(),()]
        try:
            self.cursor.executemany(sql,L)
            # 将数据提交数据库
            self.db.commit()
        except:
            # 发生错误则回滚
            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))
        # 断开游标与数据库连接
        self.cursor.close()
        self.db.close()
if __name__ == &#39;__main__&#39;:
    start=time.time()
    spider = MaoyanSpider()
    spider.run()
    end=time.time()
    print("执行时间:%.2f" % (end-start))
Nach dem Login kopieren
Die Datenbankabfrage speichert die Ergebnisse wie folgt:

mysql> select * from movieinfo;
+----------------+---------------------- ---------------------+------------+
|. Name                                                            ------------ --------+
|. Xu Zheng, Zhou Yiwei, Wang Chuanjun |. The Shawshank Redemption |                                               10 |
|. Viggo Mortensen, Mahershala Ali, Linda Cardellini |.                                2018-08-03 |
| Konkubine |. Leslie Cheung, Zhang Fengyi, Gong Li                                                                                                                                                                  , Justino Durano, Sergio Bini Busterik |. 03.01.2020 |
|. Dieser Killer ist nicht zu kalt | 01.09.2010 |
+----------------+-------------------------------- -------------------+--------------- ------+
10 Zeilen im Satz (0,01 Sek.)

Das obige ist der detaillierte Inhalt vonWie verwende ich Python Pymysql zur Datenspeicherung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!