当前位置:首页 > > 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 数据库!



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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭