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_name
try:
    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作为占位符,不需要加引号文章来源地址https://www.toymoban.com/news/detail-433096.html

# 创建数据库连接对象
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使用详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文详解python中的数据库操作

    最近做毕设,需要添加个数据库,记录一下。 重点介绍数据库API接口中的连接对象和游标对象 1. 连接对象 数据库连接对象主要提供获取数据库游标对象和提交/回滚事务的方法,以及关闭数据库连接。 使用connect函数获取对象,该函数有多个参数: host 主机名 database/db 数据库

    2024年02月07日
    浏览(29)
  • 一个月学通Python(十四):Python操作Mysql数据库详解(必备)

    结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教程(0基础》

    2024年02月16日
    浏览(37)
  • SqlAlchemy使用教程(三) CoreAPI访问与操作数据库详解

    SqlAlchemy使用教程(一) 原理与环境搭建 SqlAlchemy使用教程(二) 入门示例及编程步骤 SqlAlchemy使用教程(三) CoreAPI访问与操作数据库详解 SqlAlchemy使用教程(四) MetaData 与 SQL Express Language 的使用 SqlAlchemy使用教程(五) ORM API 编程入门 Sqlalchemy 的Core部分集成了DB API, 事务管理,schema描述等

    2024年02月02日
    浏览(47)
  • 【100天精通python】Day30:使用python操作数据库_数据库基础入门

     专栏导读  专栏订阅地址: https://blog.csdn.net/qq_35831906/category_12375510.html 1.1 什么是数据库?         数据库是一个结构化存储和组织数据的集合,它可以被有效地访问、管理和更新。数据库的目的是为了提供一种可靠的方式来存储和管理大量的数据,以便用户和应用程序

    2024年02月13日
    浏览(45)
  • 零基础学Python|Python高阶-使用Python操作数据库

    ​ 作者主页:编程指南针 作者简介:Java、前端、Python开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享 收藏点赞不迷路 关注作者有好处 文末获得源码 数据库作为存储系统数据的主要工具,担负着数据持久化存

    2024年02月10日
    浏览(28)
  • Python SQL 数据库操作利器:SQLAlchemy 库详解(看这一篇文章就够了)

    引言: Python 是一门广受欢迎的编程语言,而 SQL 则是用于管理和操作数据库的标准查询语言。SQLAlchemy 是一个功能强大的 Python 库,它提供了一种与多种数据库进行交互的灵活方式。本文将介绍 SQLAlchemy 库,并以九个重要的要点详细解释其功能和用法。 SQLAlchemy 简介 SQLAlchem

    2024年02月07日
    浏览(51)
  • 【100天精通python】Day31:使用python操作数据库_数据库编程接口,连接对象和游标对象,数据库连接配置

    目录  专栏导读  一、数据库编程接口 1. Python标准库接口 2. MySQL Connector/Python接口

    2024年02月13日
    浏览(33)
  • python3使用pymsql操作mysql数据库

    操作系统 :Windows 10_x64 python版本 :3.9.2 pymysql版本: 1.0.2 MySQL版本: 5.7.38   之前写过一篇关于python操作mysql数据库的文章: https://www.cnblogs.com/MikeZhang/p/pythonOptMysql20170703.html 当时是基于python 2.7 和 mysql 5.5来整理的,但目前python 2.7已经不再维护,主流的是python 3,今天基于pyt

    2024年02月05日
    浏览(45)
  • Python 操作 MySQL:使用 mysql-connector-python 操作 MySQL 数据库

    大家好,我是水滴~~ 当涉及到使用 Python 操作 MySQL 数据库时, mysql-connector-python 库是一个强大而常用的选择。该库提供了与 MySQL 数据库的交互功能,使您能够执行各种数据库操作,如连接数据库、执行查询和插入数据等。在本文中,我们将介绍如何使用 mysql-connector-python 库来

    2024年02月04日
    浏览(35)
  • Python操作Neo4j数据库使用案例

      Neo4j是一个世界领先的开源的基于图的数据库。其语言操作简单直观,本文假设你已经安装好Neo4j数据库,并对知识图谱有一定的了解。Neo4j数据库的查询语言为CQL,其代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。你可以访问(https://www.

    2024年02月03日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包