5. Python爬虫进阶基础——MySQL数据库操作

 目录

1.  连接MySQL

2.  执行SQL语句

3.  创建表

4.  插入数据

5.  查看数据

6.  修改数据

7.  删除数据


1.  连接MySQL

语法格式:

connect(host='127.0.0.1',user='root',passwd='',db='test')

      其中,host代表服务器名;user为登录用户名;passwd代表指定用户的密码;db为所需要连接的数据库。 

代码实例:

import MySQLdb												#导入模块
conn=MySQLdb. connect(host='127.0.0.1',user='root',passwd='',db='test')		#连接数据库
cur=conn.cursor()												#创建游标对象
if cur:
	print("成功连接到MySQL")

2.  执行SQL语句

语法格式:

execute(self, query, args)

      其中,参数query为需要执行的SQL语句,args为语句的参数列表,执行该方法将会执行相应的SQL语句,返回值为数据库中受影响的行数。 

      执行完SQL语句之后,可以调用fetchone()方法fetchall()方法来返回一条结果或所有结果行。

代码实例:

import MySQLdb						# 导入模块
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='test')		# 连接数据库

cur=conn.cursor()					# 创建游标对象
sql="select version()"				# 定义SQL语句查看版本
cur.execute(sql)					# 执行SQL语句
version=cur.fetchone()			    # 获取结果
print("当前MySQL的版本为:",version)		# 输出结果

sql="select now()"					# 定义SQL语句查看时间
cur.execute(sql)
time=cur.fetchone()
print("当前日期时间为:",time)
cur.close()
conn.close()

3.  创建表

代码实例

import MySQLdb				# 导入模块
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='test')		# 连接数据库
cur=conn.cursor()			# 创建游标对象
sql="show tables"			# 定义SQL语句
cur.execute(sql)			# 执行SQL语句
result=cur.fetchone()		# 获取结果
print("当前数据库中表的个数为:",result)		# 输出结果

sql_create_table="""CREATE TABLE STUDENT (
		ID INT,
		NAME  CHAR(20) NOT NULL,
		AGE INT,  
		SEX CHAR(2),
		DEGREE INT )"""
cur.execute(sql_create_table)
sql="show tables"						# 定义SQL语句
cur.execute(sql)				# 执行SQL语句
result=cur.fetchone()		# 获取结果
print("建表操作后数据库中表的个数为:",result)			# 输出结果
cur.close()
conn.close()

4.  插入数据

语法格式:

INSERT TABLENAME(COLUMN_NAME1, COLUMN_NAME2,...)
        VALUES ('VALUE1', 'VALUE2',...)

      其中,tablename为需要执行插入的表的名称,column_name为字段名(或者叫列名),value为字段相对应的值。执行该SQL语句就会把指定的数据添加到表中。 

代码实例:

import MySQLdb												#导入模块
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='test')		#连接数据库
conn.set_character_set('utf8')									#设置字符集
cur=conn.cursor()												#创建游标对象
sql="SELECT COUNT(*) FROM STUDENT"										#定义SQL语句
cur.execute(sql)											#执行SQL语句
result=cur.fetchone()										#获取结果
print("当前数据表student的记录数为:",result[0])						#输出结果
print("执行插入数据")
insert="""INSERT INTO `STUDENT` (`ID`, `NAME`, `AGE`, `SEX`, `DEGREE`) VALUES
	('1','李雷','15','男','1'),
	('2','韩梅梅',15,'女','1'),
	('3','张三','16','男','3'),
	('4','小马','14','男','3'),
	('5','高霞','15','女','3')
	"""
cur.execute(insert)
conn.commit()
sql="SELECT COUNT(*) FROM STUDENT"										#定义SQL语句
cur.execute(sql)											#执行SQL语句
result=cur.fetchone()										#获取结果
print("插入后数据表student的记录数为:",result[0])						#输出结果
cur.close()
conn.close()

5.  查看数据

语法格式:

select field1,field2,..., fieldn from 表名 [where 条件];

      其中,field为字段名称,where为有条件的查询。 

代码实例:

(1)简单的数据查询

import MySQLdb												#导入模块
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='test')		#连接数据库
cur=conn.cursor()												#创建游标对象
conn.set_character_set('utf8')										#设置字符集
sql="SELECT * FROM STUDENT"							#定义SQL语句
cur.execute(sql)												#执行SQL语句
result=cur.fetchall()												#获取结果
print("==================================")
for re in result:
	print(re[0],end="")
	print("\t",re[1],end="")
	print("\t",re[2],end="")
	print("\t",re[3],end="")
	print("\t",re[4])
	print("==================================")
cur.close()
conn.close()

(2)有条件的数据查询

import MySQLdb												#导入模块
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='test')		#连接数据库
cur=conn.cursor()												#创建游标对象
conn.set_character_set('utf8')										#设置字符集
sql="SELECT * FROM STUDENT WHERE SEX='男'"							#定义SQL语句
cur.execute(sql)												#执行SQL语句
result=cur.fetchall()												#获取结果
print("所有的男性:")
print("==================================")
for re in result:
	print(re[0],end="")
	print("\t",re[1],end="")
	print("\t",re[2],end="")
	print("\t",re[3],end="")
	print("\t",re[4])
	print("==================================")
cur.close()
conn.close()

6.  修改数据

语法格式:

UPDATE table_name SET field1 = value1, field2=value2 WHERE 条件

      修改数据的SQL语句通常需要带WHERE条件子句,以保证只有符合条件的记录被修改,否则可能所有记录都会被改成某种状态。 

代码实例:

import MySQLdb												#导入模块
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='test')		#连接数据库
cur=conn.cursor()												#创建游标对象
conn.set_character_set('utf8')										#设置字符集
sql="SELECT * FROM STUDENT WHERE ID='3'"							#定义SQL语句
cur.execute(sql)												#执行SQL语句
re=cur.fetchone()												#获取结果
print("修改前内容为:")
print("==================================")
print(re[0],end="")
print("\t",re[1],end="")
print("\t",re[2],end="")
print("\t",re[3],end="")
print("\t",re[4])
update="UPDATE STUDENT set DEGREE='2' WHERE ID='3'"				#定义修改记录SQL语句
cur.execute(update)												#执行修改
conn.commit()													#提交操作
sql="SELECT * FROM STUDENT WHERE ID='3'"							#定义SQL语句
cur.execute(sql)												#执行SQL语句
re=cur.fetchone()												#获取结果
print("修改后内容为:")
print("==================================")
print(re[0],end="")
print("\t",re[1],end="")
print("\t",re[2],end="")
print("\t",re[3],end="")
print("\t",re[4])
cur.close()
conn.close()

7.  删除数据

语法格式:

DELETE FROM table_name [WHERE Clause]

      执行该SQL语句就会将符合条件的记录从表中删除。与修改记录一样,这里也需要使用WHERE条件子句,这样可以确保只有满足一定条件的记录才会被删除,如果不使用WHERE条件子句,那么所有记录都会被删除,后果将无法挽回。 

代码实例:

import MySQLdb												#导入模块
conn=MySQLdb.connect(host='127.0.0.1',user='root',passwd='',db='test')		#连接数据库
cur=conn.cursor()												#创建游标对象
conn.set_character_set('utf8')										#设置字符集
sql="SELECT * FROM STUDENT"									#定义SQL语句
cur.execute(sql)												#执行SQL语句
result=cur.fetchall()												#获取结果
print("删除记录之前表中内容为:")
print("==================================")
for re in result:													#遍历结果
	print(re[0],end="")
	print("\t",re[1],end="")
	print("\t",re[2],end="")
	print("\t",re[3],end="")
	print("\t",re[4])
	print("==================================")
sql_del="DELETE FROM STUDENT WHERE id='4'"
cur.execute(sql_del)
conn.commit()
sql="SELECT * FROM STUDENT"									#定义SQL语句
cur.execute(sql)												#执行SQL语句
result=cur.fetchall()												#获取结果
print("删除记录之后表中内容为:")
print("==================================")
for re in result:													#遍历结果
	print(re[0],end="")
	print("\t",re[1],end="")
	print("\t",re[2],end="")
	print("\t",re[3],end="")
	print("\t",re[4])
	print("==================================")

cur.close()
conn.close()
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Python爬虫进阶涉及到一些高级技术和技巧,以下是一些你可以学习和探索的主题: 1. 多线程和多进程:使用多线程或多进程可以提高爬虫的效率,同时处理多个请求或任务。 2. 使用代理:在爬取网页时,你可能会被网站封禁IP,使用代理可以轮流切换IP地址来规避封禁。 3. 反反爬虫策略:有些网站会采取一些手段防止爬虫,你需要学习如何识别和应对这些策略,比如验证码、页面解密等。 4. 使用Cookie和Session:有些网站会使用Cookie和Session来验证用户身份,你需要学习如何在爬虫中模拟登录和保持会话状态。 5. 使用数据库:将爬取到的数据存储到数据库中可以方便后续的数据分析和处理。 6. 使用框架和库:学习使用一些流行的爬虫框架和库,比如Scrapy、BeautifulSoup、Requests等,可以大大简化爬虫的开发和管理。 7. 高级数据解析和提取:学习使用正则表达式、XPath、CSS选择器等高级技术来解析和提取网页中的数据。 8. 动态网页爬取:学习使用Selenium等工具来爬取动态生成的网页内容,比如通过JavaScript异步加载的数据。 9. 分布式爬虫:学习如何构建分布式爬虫系统,可以提高爬取效率和可靠性。 10. 爬虫的合法性和道德问题:学习了解相关法律法规和伦理道德,确保你的爬虫行为合法合规。 这些都是Python爬虫进阶的一些方向,你可以根据自己的兴趣和需求选择学习的内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简时刻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值