mysql数据库写入方法,连接mysql并将数据写入数据库方法(基本使用pymysql库,实例代码完整),Mysql,Pymysql,的,附...

一、PyMySQL库介绍

PyMySQL是在 Python3.x 版本中用于连接 MySQL 服务器的一个库。本质上就是一个套接字客户端,只不过这个套接字客户端是在python程序中用的。

二、安装和使用

1.安装

pip install pymysql

2.方法

pymysql.connect()参数说明:(连接数据库时需要添加的参数)

host(str): MySQL服务器地址

port(int): MySQL服务器端口号

user(str): 用户名

passwd(str): 数据库密码

db(str): 数据库名称

charset(str): 连接编码

connect()对象支持的方法:

cursor() 使用该连接创建并返回游标

commit() 提交当前事务

rollback() 回滚当前事务

close() 关闭连接

cursor对象支持的方法:

execute(op) 执行一个数据库的查询命令

fetchone() 取得结果集的下一行

fetchmany(size) 获取结果集的下几行

fetchall() 获取结果集中的所有行

rowcount() 返回数据条数或影响行数

close() 关闭游标对象

3.使用

连接

# 导入pymysql模块

import pymysql

# 连接database

conn = pymysql.connect(

host=“你的数据库地址”,

user=“用户名”,

password=“密码”,

database=“数据库名”,

charset="utf8")

# 得到一个可以执行SQL语句的光标对象

cursor = conn.cursor() # 执行完毕返回的结果集默认以元组显示

# 得到一个可以执行SQL语句并且将结果作为字典返回的游标

#cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 定义要执行的SQL语句

sql = "INSERT INTO URL(url) VALUES (%s)"

# 执行SQL语句

cursor.execute(sql)

# 关闭光标对象

cursor.close()

# 关闭数据库连接

conn.close()

相关增删查改不再做说明,自己处理数据并添加修改sql命令即可。

附:爬虫爬取京东商品各详情页Url并插入mysql数据库代码

(为确保安全,mysql.connect内容已删除)

(mysql需先建立相关库和表)

(需要配置webdriver,方法链接:

selenium + cromedriver配置方法

)

from selenium import webdriver

from lxml import etree

import time

import pymysql

urls = []

# 使用selenium模拟人为访问页面,获取数据

def spider_jd(url):

# ChromeOptions() 函数中有谷歌浏览器的一些配置

options = webdriver.ChromeOptions()

# 告诉谷歌这里用的是无头模式

options.add_argument('headless')

# 创建谷歌浏览器对象

driver = webdriver.Chrome('D:\Anaconda3\envs\Python\chromedriver.exe')

# 打开谷歌浏览器,进入指定网址的页面

driver.get(url)

# 模拟下拉页面动作,是动态页面加载

driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")

# 停顿2.5秒等待页面加载完毕!!!(必须留有页面加载的时间,否则部分浏览器获得的源代码会不完整。)

time.sleep(2.5)

# 相当于 request.get(url, headers=header)

source = driver.page_source

# 构造了一个XPath解析对象并对HTML文本进行自动修正。

html1 = etree.HTML(source)

# 提取href

href = html1.xpath('//div[@class="p-img"]/a/@href')

# 仅保存前60个值,k值每次循环自增60

for hr in href:

if hr[:6] != 'https:': # 判断是否为https:开头项,为否则添加https:头

urls.append('https:' + hr)

else:

urls.append(hr)

del urls[k:]

driver.close() # 爬取完毕关闭浏览器

def create():

try:

db = pymysql.connect(host = "x.x.x.x", user = "root", password = "***", database = "SPIDER_URL", charset="utf8") # 连接数据库

# 使用cursor()方法获取操作游标

cursor = db.cursor()

# 使用execute方法执行SQL语句

cursor.execute("DROP TABLE IF EXISTS URL")

sql = 'CREATE TABLE URL(url CHAR(50));'

# 执行SQL语句

cursor.execute(sql)

print("连接服务器成功!")

# 关闭光标对象

cursor.close()

# 关闭数据库连接

db.close()

except:

print("连接服务器失败!")

def insert(value):

db = pymysql.connect(host = "x.x.x.x", user = "root", password = "***", database = "SPIDER_URL", charset="utf8")

cursor = db.cursor()

sql = "INSERT INTO URL(url) VALUES (%s)"

try:

cursor.execute(sql, value)

db.commit()

print('插入数据成功!')

except:

db.rollback()

print("插入数据失败!")

db.close()

k = 60

for i in range(1, 2):

url = 'https://search.jd.com/Search?keyword=%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&suggest=1.his.0.0&psort=3&page={}&s=61&click=0'.format(

(i * 2) - 1)

spider_jd(url)

k = k + 60

print(urls)

print('共爬取{}条数据,爬取完毕关闭浏览器'.format(len(urls)))

try:

print("正在连接数据库。。。")

create()

print("正在插入数据。。。")

for url1 in urls:

insert(url1)

except BaseException as e:

print(e)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值