十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
pymysql 基本使用 八个步骤以及案例分析
创新互联建站主营静安网站建设的网络公司,主营网站建设方案,手机APP定制开发,静安h5小程序开发搭建,静安网站营销推广欢迎静安等地区企业咨询
一.导入pymysql模块
导入pymysql之前需要先安装pymysql模块
方法一:直接在pycharm编译器里面输入 pip install pymysql
方法二:win+r -- 输入cmd --在里面输入pip install pymysql
ps:在cmd中输入pip list后回车 可以找到安装的pymysql就表示安装成功了
1
2
3
4
5
6
1
2
3
4
5
6
在pycharm编译器中导入
import pymysql
1
2
1
2
二.获取到database的链接对象
coon = pymysql.connect(host='127.0.0.1', user='root', password='123456', database='pymysql_test')
1
1
user:是你的数据库用户名
password:数据库密码
database:你已经创建好的数据库
1
2
3
1
2
3
三.创建数据表的方法
cursor.execute(
'''create table if not exists pets(id int primary key auto_increment,
src varchar(50),
skill varchar(100)''')
1
2
3
4
1
2
3
4
四.获取执行sql语句的光标对象
cousor = coon.cousor()
1
1
五.定义要执行的sql语句
1.sql的增加数据的方法
sql = '''insert into test_mysql(id,src,skill) values(%d,%s,%s)'''
1
1
ps: test_mysql 是你连接到的数据库中的一张表
id,src,skill 这个是你创建表时所定义的字段关键字
%d,%s,%s 这个要根据你创建的字段关键字的类型而定,记住要一一对应
1
2
3
1
2
3
2.sql的删除数据的方法
sql_1 = '''delete from test_mysql where src=%s;'''
1
1
3.sql的修改数据方法
sql_2 = '''update test_mysql set src=%s where skill=%s;'
1
1
4.sql的查询方法
sql_3 = '''select * from test_mysql where skill = %s'''
1
1
六.通过光标对象执行sql语句
1.执行增加数据的sql语句
cousor.execute(sql, [2, '', '000000'])
运行后在mysql的可视化后台就可以直观的添加的数据
1
2
1
2
2.执行删除数据sql语句
new = ''
cousor.execute(sql_1, [new])
PS:这里就是根据sql语句where后面的条件进行删除对应的数据
要记住传入的数据要与sql的where后面条件匹配
1
2
3
4
1
2
3
4
3.执行修改数据的sql语句
url = ''
pwd = '666666'
cousor.execute(sql_2,[pwd,url])
1
2
3
1
2
3
4.执行查询数据的sql语句
result1 = cousor.fetchone()
fetchone() 查询=整个表中的第一条数据,
如果再次使用就会查找到第二条数据,
还可以在括号内输入id值查询到相应的数据
result2 = cousor.fetchmany()
fetchmany()查询到表里的多条数据,
在括号里输入几就会查找到表的前几条数据
result2 = cousor.fetchall()
fetchall()查询到sql查询匹配到的所有数据
print(result)
用print输出语句就能直接打印输出所查询到的数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
**总结: 在执行sql语句要传入参数时,这个参数要以列表或者元组的类型传入**
1
1
七.关闭光标对象
cousor.close()
1
1
八.关闭数据库的链接对象
coon.cousor()
1
1
九.洛克王国宠物数据抓取案例
import requests
import pymysql
from lxml import etree
from time import sleep
# 数据库链接
conn = pymysql.connect(host='127.0.0.1', user='root', password='123456', database='pymysql')
cursor = conn.cursor()
# 执行一条创建表的操作
cursor.execute(
'''create table if not exists pets(id int primary key auto_increment,name varchar(50),src varchar(100),industry text)''')
url = ''
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
response.encoding = 'gbk'
html = response.text
# print(html)
# 宠物名称
# 宠物图片(图片在 lz_src)
# 宠物技能(跳转详细页)
tree = etree.HTML(html)
li_list = tree.xpath('//ul[@id="cwdz_list"]/li') # 所有的宠物
for li in li_list:
name = li.xpath('./@name')[0] # 每一个宠物的名称
src = 'http:' + li.xpath('./a/img/@lz_src')[0] # 图片链接
link = '' + li.xpath('./a/@href')[0] # 宠物的详细链接
industry = [] # 数组里面存放每一个对象,每一个对象就是一个技能
# 对详细链接发起请求,获取技能
try:
detail_resp = requests.get(url=link, headers=headers)
sleep(0.5)
detail_resp.encoding = 'gbk'
detail_tree = etree.HTML(detail_resp.text)
# 技能
skills = detail_tree.xpath('/html/body/div[5]/div[2]/div[2]/div[1]/div[1]/table[4]/tbody/tr')
del skills[0]
del skills[0]
for skill in skills:
item = {}
item['name'] = skill.xpath('./td[1]/text()')[0] # 技能
item['grade'] = skill.xpath('./td[2]/text()')[0] # 等级
item['property'] = skill.xpath('./td[3]/text()')[0] # 属性
item['type'] = skill.xpath('./td[4]/text()')[0] # 类型
item['target'] = skill.xpath('./td[5]/text()')[0] # 目标
item['power'] = skill.xpath('./td[6]/text()')[0] # 威力
item['pp'] = skill.xpath('./td[7]/text()')[0] # pp
item['result'] = skill.xpath('./td[8]/text()')[0] # 效果
industry.append(item)
# print(industry)
# 数据保存 (mysql)
sql = '''insert into pets(name,src,industry) values (%s,%s,%s);'''
cursor.execute(sql, [name, src, str(industry)])
conn.commit()
print(f'{name}--保存成功!')
except Exception as e:
pass
cursor.close()
conn.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
十.总结
本章内容主要是给大家讲解一下在爬虫过程中如何将数据保存mysql数据库中去,
最后面这个案例就是一个示范,希望这篇文章能给大家带来帮助,都看到这里了给
个三连支持一下吧!!!
1
2
3
1
2
3
去装一个 pymsql包
然后
import pymysql #导入pymsql模块
#链接数据库,注意port是int型,不是str,所以不要用引号
conn = pymysql.connect(
user='root',
password='root',
host='127.0.0.1',
port=3306,
database='test_demo',
use_unicode=True,
charset="utf8"
)
#获取游标
cursor = conn.cursor()
#插入数据,注意看有变量的时候格式
cursor.execute("INSERT INTO tieba_user(`uuid`,`user_name`,`user_rank`,`user_level`,`level_status`,`tieba_name`) VALUES (%s,%s,%s,%s,%s,%s)", (user_id, user_name, user_rank, user_level, level_statu, tieba_name))
#提交
conn.commit()
#关闭连接
cursor.close()
类似这样
1、首先打开MYSQL的管理工具,新建一个test表,并且在表中插入两个字段。
2、接下来在Editplus编辑器中创建一个PHP文件,进行数据库连接,并且选择要操作的数据库。
3、然后通过mysql_query方法执行一个Insert的插入语句。
4、执行完毕以后,回到数据库管理工具中,这个时候你会发现插入的中文乱码了。
5、接下来在PHP文件中通过mysql_query执行一个set names utf8语句。
6、接下来执行以后回到MYSQL数据库中,发现插入的中文显示正常了,即成功往mysql中写入数据了。
Scrapy依赖于twisted,所以如果Scrapy能用,twisted肯定是已经安装好了。
抓取到的数据,可以直接丢到MySQL,也可以用Django的ORM模型丢到MySQL,方便Django调用。方法也很简单,按数据库的语句来写就行了,在spiders目录里定义自己的爬虫时也可以写进去。
当然使用pipelines.py是更通用的方法,以后修改也更加方便。你的情况,应该是没有在Settings.py里定义pipelines,所以Scrapy不会去执行,就不会生成pyc文件了。