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()