增删改查
import pymysql
# 打开数据库连接
conn = pymysql.connect("数据库链接","数据库用户","数据库密码","数据库表名")
# 使用cursor()方法获取操作游标
cur = conn.cursor()
sql = "sql语句"
# 使用execute方法执行SQL语句
cur.execute(sql)
# 增-删-改
# 提交到数据库执行
conn.commit()
# 查
cur.fetchone() #获取一个结果集
cur.fetchall() #获取所有结果集
cur.rowcount #返回影响的行数。
# 回滚
conn.rollback()
# 关闭连接
conn.close()
对之前一言爬取的数据存入数据库
#导包
import pymysql
import requests
import json
import random
# 定义函数mysql()
def mysql():
# 打开数据库链接
conn = pymysql.connect(
host='localhost',
user='python',
passwd='python',
db='python',
charset='utf8')
return conn
# 定义User-Agent请求头
def user_agent():
# 用户代理池
uapools = [
# Edge Trident内核 on win10
"Mozilla/5.0 (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134",
# Edge chromium内核 on win10
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36 Edg/80.0.361.54",
# Chrome on win10
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36",
# Safari on mac
"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27",
# FireFox on windows
"Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0",
# Opera on mac
"Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.9.168 Version/11.52"
]
# User-Agent
ua = uapools[random.randint(0, len(uapools) - 1)]
return ua
# 定义函数hitokoto()
def hitokoto():
# 定义url
url = 'https://v1.hitokoto.cn'
# 访问url
data = requests.get(url,headers={'User-Agent' : user_agent()}).text
# 匹配字段
txt = json.loads(data)
res = txt.get("hitokoto")
return res
# 循环写入数据库
for i in range(50):
# 调用hitokoto函数
res = hitokoto()
# sql语句
sql = 'INSERT INTO python (content) VALUES ("'+res+'")'
# 调用mysql函数
mysqls = mysql()
# 创建游标对象
cur = mysqls.cursor()
# 使用execute方法执行SQL语句
result = cur.execute('SELECT * FROM python WHERE content="'+res+'"')
# 使用 fetchone() 方法获取一条数据
data = cur.fetchone()
# 与数据库判断
if result == 0:
# 异常处理
try:
# 当前正在执行
print('当前正在执行第',i+1,'条','\n',res)
# 使用execute方法执行SQL语句
cur.execute(sql)
# 提交到数据库执行
mysqls.commit()
except:
# 如果发生错误则回滚
mysqls.rollback()
else:
continue
# 关闭数据库连接
mysqls.close()
循环写入数据库部分用删和改实现(单纯为了熟悉语法)
# 与数据库判断① 数据库删除语句(删)
if result != 0:
# 使用execute方法执行SQL语句
cur.execute('DELETE FROM python WHERE content="'+res+'"')
# 提交到数据库执行
mysqls.commit()
try:
# 当前正在执行
print('当前正在执行第',i+1,'条','\n',res)
# 使用execute方法执行SQL语句
cur.execute(sql)
# 提交到数据库执行
mysqls.commit()
except:
# 如果发生错误则回滚
mysqls.rollback()
elif result == 0:
try:
# 当前正在执行
print('当前正在执行第',i+1,'条','\n',res)
# 使用execute方法执行SQL语句
cur.execute(sql)
# 提交到数据库执行
mysqls.commit()
except:
# 如果发生错误则回滚
mysqls.rollback()
else:
continue
# 与数据库判断① 数据库更新语句(改)
if result != 0:
# 使用execute方法执行SQL语句
cur.execute('UPDATE python SET content ="'+res+'"WHERE content ="'+res+'"')
# 提交到数据库执行
mysqls.commit()
continue
elif result == 0:
try:
# 当前正在执行
print('当前正在执行第',i+1,'条','\n',res)
# 使用execute方法执行SQL语句
cur.execute(sql)
# 提交到数据库执行
mysqls.commit()
except:
# 如果发生错误则回滚
mysqls.rollback()
else:
continue