文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python数据库操作之PyMysql怎么使用

2023-07-05 08:07

关注

本文小编为大家详细介绍“python数据库操作之PyMysql怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“python数据库操作之PyMysql怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

PyMysql使用详解

在编写小脚本时,PyMysql是快速连接并操作数据库的一个不错选择。

安装

pip3 install PyMysql# 可使用 pip list 查看此环境安装了哪些第三方库    pip list | grep PyMysql

使用

import pymysql
连接数据库

使用connect函数创建连接对象,此连接对象提供关闭数据库、事务回滚等操作

一般传参为:host, user, password, port(默认为3306), database(想要连接的数据库名)

db = pymysql.connect(host='127.0.0.1',                     user='root',                     password='pwd',                     database='database_name')

连接对象的常见方法

方法名说明
cursor()获取游标对象,操作数据库,如执行DML操作,调用存储过程等
commit()提交事务
rollback()回滚事务
close()关闭数据库连接
操作数据库

操作数据库主要使用cursor游标对象,对数据库进行操作

cursor游标对象的常见方法

方法名说明
close()关闭当前游标对象
execute(query)执行数据库操作,如sql语句或数据库命令
executemany(query,params)用于批量操作,如:批量更新
fetchone()获取查询结果集中的下一条记录
fetchmany(size)获取查询结果集中指定数量的记录,size默认为1
fetchall()获取查询结果集中所有记录
nextset()跳至下一个可用的结果集

fetchone(),fetchmany(size),fetchall() 三者的返回值都是元组 或 元组的嵌套 查

查询主要获取结果集,注意fetchone 得到的是元组, fetchmany(size),fetchall()得到的是元组的嵌套

注意:

如果既要使用python的字符串解析%,sql语句中又包含sql的模糊查询占位符%, 模糊查询使用%%即可,这样不会报错

import pymysql# 创建数据库连接对象db = pymysql.connect(host='127.0.0.1',                     user='root',                     password='pwd',                     database='database_name')# 创建游标对象cursor = db.cursor()table_name = 'map_point'sql = "SELECT * FROM %s WHERE username LIKE 'DL%%' " % table_nametry:    cursor.execute(sql)  # 执行sql语句,也可执行数据库命令,如:show tables    result = cursor.fetchall()  # 所有结果    print(result)except Exception as e:    db.rollback()    print("查询失败")    print(e)finally:    cursor.close()  # 关闭当前游标    db.close()  # 关闭数据库连接

循环查询:

在一些场景中,需要进行循环查询,判断,此时在执行完execute查询语句后,务必进行commit提交,否则每次查询到的数据都是之前查询结果的快照,也就是旧数据。

或者采用第二种方案,创建connect连接时,增添autocommit=True属性,自动进行commit提交。

增,删,改

增删改需要有提交事务的操作,查不需要提交事务,但如果循环查询,务必提交事务,否则结果都是重复的

创建连接对象——db= pymysql()

创建cursor游标对象——cur = db.cursor()

数据操作——cur.execute(sql)

提交连接事务——db.commit()

关闭cursor游标对象——cur.close()

关闭连接对象——db.close( )

import pymysql# 创建数据库连接对象db = pymysql.connect(host='127.0.0.1',                     user='root',                     password='pwd',                     database='database_name')# 创建游标对象cursor = db.cursor()table_name = 'table_name 'user_id = 'yyy'user_no = 'xxx'sql = "UPDATE %s SET user_no = '%s' WHERE user_id = '%s'" % (table_name, user_no, user_id)try:    cursor.execute(sql)  # 执行sql语句,也可执行数据库命令,如:show tables    db.commit()  # 增删改,必须执行事务    print("数据更新成功")except Exception as e:    db.rollback()  # 若出现失败,进行回滚    print("数据更新失败")    print(e)finally:    cursor.close()  # 关闭当前游标    db.close()  # 关闭数据库连接

使用循环批量更新

db = pymysql.connect(host='127.0.0.1',                     user='root',                     password='pwd',                     database='database_name')table_name = 'table_name'update_list = ['xxx2', 'xxxx3']condition_list = ['xxx', 'xxx1']# 条件集合,更新集合长度相等时可使用,可根据其他情况重新编写cursor = db.cursor()for i in range(len(condition_list)):    sql = "UPDATE %s SET user_no = '%s' WHERE user_id = '%s'" % (table_name, update_list[i],                                                                                 condition_list[i])    print('执行sql语句:' + sql)    try:        cursor.execute(sql)        db.commit()        print("数据更新成功" + str(i+1) + '条')    except Exception as e:        db.rollback()        print("数据更新失败")        print(e)cursor.close()db.close()

使用executemany(query, param) 批量更新

params为每条记录的维度,可为嵌套数组和元组

注意:sql语句中需要更改的数据不管什么类型,统一使用%s作为占位符,不需要加引号

# 创建数据库连接对象db = pymysql.connect(host='127.0.0.1',                     user='root',                     password='pwd',                     database='database_name')# 创建游标对象cursor = db.cursor()update_list = ['a', 'b']condition_list = ['a1', 'b1']# 条件数组和需要更新的数据数组是分开的,因为param需要以每条的维度,所以可以使用拉链函数合并params = zip(update_list, condition_list) # 或 param = [['a', 'a1'], ['b', 'b1']]sql = "UPDATE map_point SET storageLocation_no = %s WHERE position_id = %s"  # 注意 这里的 占位%s 都不用加引号try:    cursor.executemany(sql, params)  # 执行sql语句    db.commit()  # 执行事务    print("数据批量更新成功")except Exception as e:    db.rollback()    print("数据更新失败")    print(e)finally:    cursor.close()  # 关闭当前游标    db.close()  # 关闭数据库连接

读到这里,这篇“python数据库操作之PyMysql怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯