start
MySQL 是一种关系型数据库,此节我们来学习如何插入输入到 MySQL 中。
安装 MySQL
官网下载:
https://www.mysql.com/cn/downloads/
https://dev.mysql.com/downloads/mysql/
木下瞳网盘分享:
链接:https://pan.baidu.com/s/19BDy66sGbaRBNEKMCFsuRg
提取码:veps
下好后默认是开启的。
默认安装路径:
C:/Program Files/MySQL/MySQL Server
C:\ProgramData\MySQL
安装可视化工具 SQLog
官网下载:
https://www.webyog.com/product/sqlyog
木下瞳网盘分享:
链接:https://pan.baidu.com/s/1u7gu4KtE56OomjAd0IKifQ
提取码:2smm
创建数据库
打开可视化工具:

创建一个数据表:CREATE DATABASE mydb,执行这条命令后,点击【文件】【新连接】,重新连接,等于刷新一下,就会有我们创建的数据库 mydb:

创建数据表
我们选中我们的 mysb 数据库,创建一个保存麦当劳城市,店名的表:
CREATE TABLE mc(
	city VARCHAR(1000),
	NAME VARCHAR(1000)
)ENGINE INNODB DEFAULT CHARSET=utf8;

重新连接刷新一下记得。
python 连接数据库,插入数据
conn = pymysql.connect(host='localhost', user='root', password='123456',
                       database='mydb', port=3306, charset='utf8')
# 创建游标
cursor = conn.cursor()
user,password 是安装是时候设的,database 是我们需要连接的数据库,端口 3306,编码 utf8
插入数据:
for d in data:
    cursor.execute(
        'insert into mc(city,name) VALUES("%s","%s")' % (
            d[0],d[1]))
    # 从游标中获取结果
    cursor.fetchall()
    # 提交结果
    conn.commit()
插入数据到 mc 表的两个字段 city,name 中,值是字符型。百分号后面是值
插入以后要获取并提交,才会插入到数据库中
最后全部插入完后,需要把游标关闭,数据库关闭:
# 关闭游标
cursor.close()
# 关闭数据库
conn.close()
end

完整代码
import requests
import re
import time
import pymysql
from fake_useragent import UserAgent
conn = pymysql.connect(host='localhost', user='root', password='123456',
                       database='mydb', port=3306, charset='utf8')
# 创建游标
cursor = conn.cursor()
def get_html(url):
    '''
    下载 html
    :param url:
    :return:
    '''
    ua = UserAgent()
    headers = {'User-Agent': ua.random}
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        response.encoding = 'utf-8'
        return response.text
    else:
        return
def info(html):
    '''
    解析麦当劳响应,获取数据
    :param response:
    :return:
    '''
    pat1 = '<span>城市</span>(.*?)</td>'
    cities = re.findall(pat1,html,re.S)
    pat2 = '<span>门店名称</span>(.*?)</td>'
    shop_names = re.findall(pat2,html,re.S)
    infos = zip(cities,shop_names)
    return list(infos)
def insert_mysql(data):
    '''
    插入数据到数据库
    :param data:
    :return:
    '''
    for d in data:
        cursor.execute(
            'insert into mc(city,name) VALUES("%s","%s")' % (
            d[0],d[1]))
        # 从游标中获取结果
        cursor.fetchall()
        # 提交结果
        conn.commit()
if __name__ == '__main__':
    '''
    主接口
    '''
    mc_url = ['https://www.mcdonalds.com.cn/index/Quality/publicinfo/deliveryinfo?page={}'
                       .format(str(i)) for i in range(1,236)]
    for url in mc_url:
        html = get_html(url)
        data = info(html)
        insert_mysql(data)
        time.sleep(1)
    # 关闭游标
    cursor.close()
    # 关闭数据库
    conn.close()