DevOps系列之 Python操作数据库

pymysql操作mysql数据库

  • 安装pymysql

pip install pymysql

pymysql操作数据库

1.连接数据库 使用Connect方法连接数据库 pymysql.Connections.Connection(host=None, user=None, password='', database=None, port=0, charset='') 参数说明: host -- 数据库服务器所在的主机。 user -- 登录用户名。 password -- 登录用户密码。 database -- 连接的数据库。 port -- 数据库开放的端口。(默认: 3306) charset -- 连接字符集。 返回值: 返回连接对象

例子: link = pymysql.Connect(host='localhost', port=3306, user='root', password='123456', db='shop', charset='utf8')

方法 说明
begin() 开启事务
commit() 提交事务
cursor(cursor=None) 创建一个游标用来执行sql语句
rollback() 回滚事务
close() 关闭连接
select_db(db) 选择数据库
  • 连接对象方法

2.创建游标

cursor = link.cursor() print(cursor.rowcount) #打印受影响行数

方法 说明
close() 关闭游标
execute(query, args=None) 执行单条语句,传入需要执行的语句,是string类型;同时可以给查询传入参数,参数可以是tuple、list或dict。执行完成后,会返回执行语句的影响行数。
fetchone() 取一条数据
fetchmany(n) 取多条数据
fetchall() 取所有数据

3.执行sql语句

# 执行sql语句

sql = 'select * from user1'

# 执行完sql语句,返回受影响的行数 num = cursor.execute(sql)

4.获取结果集 result1 = cursor.fetchone() print(result1)

5.关闭连接 cursor.close() link.close()

pymysql中事务处理

pymysql默认是没有开启自动提交事务,所以我们如果进行增、删、改,就必须手动提交或回滚事务。

sql 复制代码
sql = 'delete from user where id=%s' % user_id
​
# 如果要执行增删改语句的时候,下面的就是固定格式
try:
 cursor.execute(sql)
 # 如果全部执行成功,提交事务
 link.commit()
 print(cursor.lastrowid) #获取最后插入记录的自增id号
except Exception as e:
 print(e)
 link.rollback()
finally:
 cursor.close()
 link.close()

案例

使用pymysql向goods表中添加一条数据:

python 复制代码
from pymysql import *
 
​
def main():
  # 创建connection连接
  conn = connect(host='localhost', port=3306, database='shop', user='root',
          password='root', charset='utf8')
  # 获取cursor对象
  cs1 = conn.cursor()
  # 执行sql语句
  query = "insert into goods(id,name,price,num) values(%s,%s,%s,%s)"
  cs1.execute(query,(4,'蒙牛酸奶',13.9,88))
 
  # 提交之前的操作,如果之前已经执行多次的execute,那么就都进行提交
  conn.commit()
 
  # 关闭cursor对象
  cs1.close()
  # 关闭connection对象
  conn.close()
 
 
if __name__ == '__main__':
  main()

当然也可以删除、查询、修改表中的数据,但是无论是怎么操作,都需要创建连接并在结束的时候关闭连接对象。

相关推荐
元闰子16 小时前
怎么让程序更高效地连起来?
数据库·redis·mysql
夜幽青玄16 小时前
mybatis-plus调用报 org.springframework.dao.DataIntegrityViolationException 错误处理
开发语言·python·mybatis
洲覆16 小时前
Redis 内存淘汰策略
开发语言·数据库·redis·缓存
胖头鱼的鱼缸(尹海文)17 小时前
数据库管理-第376期 Oracle AI DB 23.26新特性一览(20251016)
数据库·人工智能·oracle
麦聪聊数据17 小时前
浅谈SQL审核(一):SQL审核实现方式与常见工具的选择
数据库·sql
ajassi200017 小时前
开源 Linux 服务器与中间件(七)数据库--MySQL
linux·服务器·数据库·ubuntu·开源
韩立学长17 小时前
【开题答辩实录分享】以《自然灾害隐患点管理信息系统》为例进行答辩实录分享
数据库·spring boot
迎風吹頭髮17 小时前
Linux服务器编程实践58-getnameinfo函数:通过socket地址获取主机名与服务名
开发语言·数据库·php
christine-rr17 小时前
linux常用命令——其他
linux·服务器·网络·数据库·redis·ubuntu
这里有鱼汤18 小时前
📊量化实战篇:如何计算RSI指标的“拥挤度指标”?
后端·python