本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查。
使用第三方库pymysql:
安装方法:
——pip install pymysql
——python setup.py install(cmd下进入到所下载的pymysql文件目录后)
一、数据存储数据库
- 导入模块:
import pymysql
- 获取mysql数据库连接:
connection = pymysql.connect(host='localhost', #host是主机名称
user='root', #登录数据库的用户名
password='1234567890', #密码
db='wiki', #数据库名称
charset='utf8') #编码格式
- 获取会话指针(游标):
——coursor = connection.cursor() #返回一个游标(会话指针)对象
——with connection.cursor() as cursor:
- 执行sql语句:
cursor.execute(sql,(参数1,参数n))
- 提交:
connection.commit()
- 关闭连接:
connection.close()
Python存储数据库实例:
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import pymysql
resp = urlopen("https://en.wikipedia.org/wiki/Main_Page").read().decode("utf-8")
soup = BeautifulSoup(resp, "html.parser")
listUrls = soup.find_all("a", href=re.compile("^/wiki/"))
connection = pymysql.connect(host='localhost',
user='root',
password='12345689',
db='wiki',
charset='utf8')
try:
with connection.cursor() as cursor1:
for url in listUrls:
if not re.search("\.(jpg|jpeg)$", url['href']):
sql = "insert into `urls`(`urlname`,`urlhref`)values(%s, %s)"
cursor1.execute(sql, (url.get_text(), "https://en.wikipedia.org" + url["href"])) #执行sql语句,其中get_text方法是返回标签内的所有文本
connection.commit() #连接提交
finally: #无论发不发生error都执行finally
connection.close()
二、查询数据库数据
- 导入模块:
import pymysql
- 获取mysql数据库连接:
connection = pymysql.connect(host='localhost', #host是主机名称
user='root', #登录数据库的用户名
password='1234567890', #密码
db='wiki', #数据库名称
charset='utf8') #编码格式
- 获取会话指针(游标):
——coursor = connection.cursor() #返回一个游标(会话指针)对象
——with connection.cursor() as cursor2:
- 执行sql语句:
—— count = cursor2.execute(sql) #执行sql语句,返回对应的总记录数
——results = cursor2.fetchall() #查询所有
——result1 = cursor2.fretchone() #查询下一行
——result2 = cursor2.fetchmany(size) #查询指定size的行数
- 关闭连接:
connection.close()
Python查询数据库实例(在上面的存储数据库完成的基础上):
import pymysql
connection = pymysql.connect(host='localhost',
user='root',
password='',
db='wiki',
charset='utf8')
try:
with connection.cursor() as cursor2:
sql = "select `urlname`, `urlhref` from `urls` where `id` is not null"
count = cursor2.execute(sql)
print(count)
result1 = cursor.fetchall()
print(result1)
result2 = cursor2.fetchmany(size=5)
print(result2)
finally:
connection.close()
持续更新中…