暑期Stata培训班报名倒计时咯!!!
接力线上的网课培训,我们在今夏又开始新一轮的线下培训啦!
8月4日至12日
,爬虫俱乐部期待与您的相遇!培训具体内容详见推文《暑期Stata编程技术定制培训班》。
有问题,不要怕!
点击推文底部“
阅读原文
”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱
[email protected]
,我们会及时为您解答哟~
喜大普奔~爬虫俱乐部的github主站
正式上线了!我们的网站地址是:
https://stata-club.github.io
,粉丝们可以通过该网站访问过去的推文哟~
好消息:爬虫俱乐部隆重推出数据定制及处理业务啦,您有任何网页数据获取及处理方面的难题,请发邮件至我们邮箱[email protected],届时会有俱乐部资深高级会员为您排忧解难!
在实际工作过程中,我们往往需要将在Python中得到的数据保存到SQL里,如果我先将Python中的数据保存到本地,再打开MySQL,将本地文件上传上去的话,就显得麻烦了不少。因此,本次小编将给大家介绍的就是使用Python中的pymysql模块操作MySQL数据的方法。
首先,我们需要下载相关的模块pymysql,小编使用的是
pycharm编辑器
,可以简单地从
file->project interpreter->available packages
中查找pymysql并安装,如果你们使用的是非Pycharm的Python IDE,可以在终端键入
pip install pymysql
。
首先我们可以打开
MySQL
,双击用户,选中用户右键,选择“编辑用户”,我们看到:
这说明当前的MySQL运行在本地,用户名为‘root’,密码为“*********” (我们假设密码为‘123456’),运行端口号默认为3306。
import pymysql
db = pymysql.connect(host='localhost',user='root',password='123456',port=3306)
连接成功之后,我们需要调用
cursor()
方法获得MySQL的操作游标,这样我们就可以访问和操作数据库中的数据了,接下来我们创建一个叫
“spiders”
的数据库,用
cursor.execute()
来执行,最后关闭数据库连接。
cursor = db.cursor()
cursor.execute("CREATE DATABASE spiders DEFAULT CHARACTER SET utf8")
db.close()
经过以上操作之后,我们打开MySQL就会发现成功创建了spiders数据库。
比方说我们要创建一个叫
“sample”
的数据表,里面有三个变量:id,name,age。
db = pymysql.connect(host='localhost', user='root', password='123456', port=3306, db='spiders')
cursor = db.cursor()
sql = 'CREATE TABLE IF NOT EXISTS sample (id VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, age INT NOT NULL, PRIMARY KEY (id))'
cursor.execute(sql)
db.close()
值得注意的是,创建新表的时候必须指定数据库,所以在连接的时候必须再额外指定一个参数
db='spiders'
。打开MySQL,我们发现sample表确实被成功创建了:
假设我们现在有这样一条数据
data
,需要将它保存到sample这个表中
data=['0001','Amy',24]
sql = 'replace into sample(id,name,age) values(%s,%s,%s) '
cursor.execute(sql,data)
db.commit()
db.close()
注意:%s表示的是占位符,包含字符串、数字或者其他类型,%s不能加引号。
sql = 'replace into sample(id,name,age) values(%s,%s,%s)'
所起到的作用等价于
sql= "replace into sample(id,name,age) values('0001','Amy',24)"
另外,插入、更新和删除操作都是对数据库进行更改的操作,而更改操作都必须为一个事务,所以这些操作的标准写法就是:
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
data=['0001','Amy',24]
sql = 'insert into sample(id,name,age) values(%s,%s,%s) '
try:
cursor.execute(sql,data)
db.commit()
print('成功')
except:
db.rollback()
print('失败')
db.close()
如果有多条数据,我们使用上述方法一条一条录入,这显然是不可能的,在这里就使用到了
cursor.executemany()
:
data=[('0003','Cindy',21),('0004','Bob',32)]
sql = 'insert into sample(id,name,age) values(%s,%s,%s) '
try:
cursor.executemany(sql,data)
db.commit()
print('成功')
except:
db.rollback()
print('失败')
db.close()
得到:
在某些情况下,我们爬取到的数据含有重复值,如果我们只想要添加新的数据到表中,而不再添加重复数据,我们可以修改sql中的“insert”为“replace”:
可以发现,我们需要录入的数据data中有一条id为0004的数据是重复的,而id为0005的是需要添加到表中的新数据。
data=[('0005','Eve',22),('0004','Bob',32)]
sql = 'replace into sample(id,name,age) values(%s,%s,%s) '
try:
cursor.executemany(sql,data)
db.commit()
print('成功')
except:
db.rollback()
print('失败')
db.close()
得到:
注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同,纯属巧合!
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。
另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!
应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~
往期推文推荐:
1.爬虫俱乐部新版块--和我们一起学习Python
2.hello,MySQL--Stata连接MySQL数据库
3.hello,MySQL--odbcload读取MySQL数据
4.再爬俱乐部网站,推文目录大放送!
5.用Stata生成二维码—我的心思你来扫
6.
Hello,MySQL-odbc exec查询与更新
7.
Python第一天