PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
第一、PyMySQL 安装
(1)、通过pip安装pymysql
步骤:(1).进入下载地址https://github.com/PyMySQL/PyMySQL下载,点击Clone or download
(2)、将下载好的文件解压
(3)、在cmd窗口中输入一下命令
安装成功!
(2)通过安装文件
python setup.py install
第二、PyMySQL使用
(1)、引入开发包: import pymysql.cursors
(2)、获取数据库连接:
connection = pymysql.connnect(host='localhost',user='root',password='123456',db='wikiurl',charset='utf8mb4')
(3)、获取会话指针:connection.cursor()
(4)、执行SQL语句cursor.execute(sql,(参数1,参数n))
(5)、提交:connection.commit()
(6)、关闭:connection.close()
第三、打开MySQL
(1)、创建database
(2)、创建table名为urls
(3)、在pycharm中实现将数据存于mysql中
#引入开发包
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import pymysql.cursors
#请求URL并把结果用UTF-8编码
resp = urlopen("https://en.wikipedia.org/wiki/Main_Page").read().decode("utf-8")
#使用BeautifulSoup去解析
bs = BeautifulSoup(resp, "html.parser")
#获取所有以/wiki开头的a标签即url的href属性
listUrls = bs.findAll("a", href=re.compile("^/wiki/"))
#输出所有的词条对应的名称和url
for url in listUrls:
# 过滤以.jpg或.JPG结果的url
if not re.search("\.(jpg|JPG)$", url["href"]):
#输出URL的文字和对应的链接
print(url.get_text(), "<--->", "https://en.wikipedia.org" + url["href"]) # 输出每一个a标签的href属性值
#获取数据库连接
connection = pymysql.connect(host='localhost',
user='root',
password='123456',
db='wikiurl',
charset='utf8mb4')
try:
# 获取会话指针
with connection.cursor() as cursor:
# 创建SQL语句
sql = "insert into `urls`(`urlname`,`urlhref`) values(%s,%s)"
# 执行SQL语句
cursor.execute(sql, (url.get_text(), "https://en.wikipedia.org" + url["href"]))
#提交
connection.commit()
finally:
connection.close()
成功!
第三、读取MySQL中数据
几种常用方法:
得到总记录数:cursor.execute()
查询下一行,开始指向0行:cursor.fetchone()
得到指定大小:cursor.fetchmany(size=size)
得到全部:cursor.fetchall()
#引入开发包
import pymysql.cursors
# 获取数据库连接
connection = pymysql.connect(host='localhost',
user='root',
password='123456',
db='wikiurl',
charset='utf8mb4')
try:
#获取会话指针
with connection.cursor() as cursor:
#查询语句
sql = "select `urlname`,`urlhref` from `urls` where `id` is not null"
#查询所有行数
count = cursor.execute(sql)
print(count)
#查询前三条数据
result = cursor.fetchmany(size=3)
print(result)
finally:
connection.close()
成功!