当前位置:首页 > 公众号精选 > AI科技大本营
[导读]作者|黄伟呢出品|数据分析与统计学之美本文的重点,就是教会大家,如何用Python来操作MySQL数据库。1.通用步骤其实,这里有一个通用步骤,都是写死了的,大家照做就行。# 1. 导入相关库import pymysql# 2. 链接MySQL服务器db = pymysql.co...

4000字,详解 Python 操作 MySQL 数据库!作者 | 黄伟呢出品 | 数据分析与统计学之美本文的重点,就是教会大家,如何用Python来操作MySQL数据库

1. 通用步骤

其实,这里有一个通用步骤,都是写死了的,大家照做就行。# 1. 导入相关库
import pymysql

# 2. 链接MySQL服务器
db = pymysql.connect(host='localhost' , user='root' , password='******' , port=3306 ,db='spiders' , charset='utf8')

# 3. 创建一个cursor游标对象
cursor = db.cursor()

# 4. 在这一步写你的sql语句
sql = 'select version()'

# 5. 执行sql语句
cursor.execute(sql)

# 6. 断开连接
db.close()
可以看出,整个过程就是第四步那里不同。归根到底,其实就是写sql。

2. 需要特别说明的知识点

Ⅰ 各参数说明
db = pymysql.connect(host='localhost' , user='root' , password='******' , port=3306 ,db='spiders' , charset='utf8') 这一行代码很长,里面涉及到好几个参数,这里为大家一一介绍如下:
  • 参数 1 :mysql 服务器所在的主机 IP
  • 参数 2 :用户名;
  • 参数 3 :密码;
  • 参数 4 :连接的 mysql 主机的端口,默认是 3306;
  • 参数 5 :连接的数据库名;
  • 参数 6 :通信采用的编码方式,默认是'gb2312',要求与数据库创建时指定的编码一致,否则中文会乱码;
Ⅱ cursor游标对象
4000字,详解 Python 操作 MySQL 数据库!

3. Python增删改查操作

① 创建一个数据表
import pymysql

db = pymysql.connect(host='192.168.3.47' , user='root',password='******' , port=3306 , db='spiders' , charset='utf8')

cursor = db.cursor()

# 检查表是否存在,如果存在删除
cursor.execute('drop table if exists students')

# 创建表
sql = 'create table students(id int auto_increment primary key not null,name varchar(10) not null,age int not null)'

cursor.execute(sql)

db.close()
注:以后用代码创建表的机会并不多,表一般都是我们提前创建好的。
② 插入数据
import pymysql

db = pymysql.connect(host='192.168.3.47' , user='root',password='******' , port=3306 , db='spiders' , charset='utf8')

cursor = db.cursor()

# 插入数据
sql = 'insert into students(name,age) values(%s,%s)'
try:
cursor.execute(sql,('孙悟空',100000))
db.commit()
except:print("插入失败")
db.rollback()

db.close()
注 1:插入数据一定要用 try…except…语句,因为万一没插入成功,其余代码都无法执行。注 2:import pymysql,此模块是默认开启mysql的事务功能的,因此,进行“增”、“删”、“改”的时候,一定要使用db.commit()提交事务,否则就看不见所插入的数据。
③ 更新数据
import pymysql

db = pymysql.connect(host='192.168.3.47' , user='root',password='******' , port=3306 , db='spiders' , charset='utf8')

cursor = db.cursor()

# 更新数据
sql = 'update students set age =%s where name=%s'
try:
cursor.execute(sql,(30,"郭卫华"))
db.commit()
except:
print("插入失败")
db.rollback()

db.close()
③ 删除操作
import pymysql

db = pymysql.connect(host='192.168.3.47' , user='root',password='******' , port=3306 , db='spiders' , charset='utf8')

cursor = db.cursor()

# 删除数据
sql = 'delete from students where age=100000'
try:
cursor.execute(sql)
db.commit()
except:
print("插入失败")
db.rollback()

db.close()
④ 查询操作
  • fetchone()功能:获取下一个查询结果集,结果集是一个对象。
  • fetchall()功能:接收全部返回的行。
import pymysql

db = pymysql.connect(host='192.168.3.47' , user='root',password='******' , port=3306 , db='spiders' , charset='utf8')

cursor = db.cursor()

# 查询数据
sql = 'select * from students where age>60'
try:
cursor.execute(sql)
reslist = cursor.fetchall()
for row in reslist:
print(“%d--%d” %(row[0],row[1],… row[n]))
except:
print("插入失败")
db.rollback()

db.close()

4. 封装一个类

# 注:把下面类写在 studentsql 文件中
import pymysql
class StudentsSql():
def __init__(self,host,user,port,dbname,charset):
self.host
= host
self.user = user
self.port = port
self.dbname = dbname
self.charset = charset

def connet(sef):
self.db
= pymysql.connect(self.host, self.user, self.port,
self.dbname, self.charset)

def close(self):
self.cursor.close()
self.db.close()

def get_one(self,sql):
res
= None
try:
self.connect()
self.cursor.execute(sql)
res = self.cursor.fetchone()
self.close()
except:
print(“查询失败”)
return res

def get_all(self,sql):
res
= None
try:
self.connect()
self.cursor.execute(sql)
res = self.cursor.fetchall()
self.close()
except:
print(“查询失败”)
return res

def inset(self,sql):
return self.__edit(sql)

def update(self,sql):
return self.__edit(sql)

def delete(self,sql):
return self.__edit(sql)

def __edit(self,sql):
count
= 0
try:
self.connect()
count = self.cursor.execute(sql)
self.db.commit()
self.close()
except:
print(“事务提交失败”)
self.db.rollback()
return count
上述类封装成功,以后只需要调用即可。from studentsql import StudentsSql
s = StudentsSql(“host='192.168.3.47' , user='root', password='******' , port=3306 , db='spiders' , charset='utf8'”)
res = s.get_all('select * from students where age>60')
for row in res:
print(“%d--%d” %(row[0],row[1],… row[n]))
4000字,详解 Python 操作 MySQL 数据库!



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭