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()

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

相关推荐
NineData2 小时前
NineData 迁移评估功能正式上线
数据库·dba
NineData7 小时前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
赵渝强老师9 小时前
【赵渝强老师】PostgreSQL中表的碎片
数据库·postgresql
IVEN_10 小时前
只会Python皮毛?深入理解这几点,轻松进阶全栈开发
python·全栈
Ray Liang11 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
AI攻城狮11 小时前
如何给 AI Agent 做"断舍离":OpenClaw Session 自动清理实践
python
千寻girling11 小时前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python
全栈老石13 小时前
拆解低代码引擎核心:元数据驱动的"万能表"架构
数据库·低代码
AI攻城狮14 小时前
用 Playwright 实现博客一键发布到稀土掘金
python·自动化运维