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

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

相关推荐
用户27784491049935 小时前
借助DeepSeek智能生成测试用例:从提示词到Excel表格的全流程实践
人工智能·python
数据智能老司机7 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
JavaEdge在掘金7 小时前
ssl.SSLCertVerificationError报错解决方案
python
数据智能老司机8 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
我不会编程5558 小时前
Python Cookbook-5.1 对字典排序
开发语言·数据结构·python
松果猿8 小时前
空间数据库学习(二)—— PostgreSQL数据库的备份转储和导入恢复
数据库
老歌老听老掉牙8 小时前
平面旋转与交线投影夹角计算
python·线性代数·平面·sympy
满怀10158 小时前
Python入门(7):模块
python
无名之逆8 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
s9123601018 小时前
rust 同时处理多个异步任务
java·数据库·rust