博客
关于我
Python 操作Mysql(PyMysql)
阅读量:796 次
发布时间:2023-03-07

本文共 4586 字,大约阅读时间需要 15 分钟。

PyMySQL 操作 Mysql 数据库 实现 简单的增删改查

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,安装方便且支持 Python3。它提供了基本的数据库操作功能,适合用于简单的爬虫、自动化任务或小型项目。以下将详细介绍如何使用 PyMySQL 连接 MySQL 数据库并实现增删改查操作。

PyMySQL 安装

在安装 PyMySQL 之前,确保已安装 Python3环境。安装步骤如下:

  • 检查已安装的 Python 包:
  • pip list
    1. 如果 PyMySQL 未安装,运行以下命令安装最新版本:
    2. pip install pymysql
      1. 由于 PyMySQL 使用 cryptography 包进行加密,确保其安装:
      2. pip install cryptography

        数据库连接

        在使用 PyMySQL 前,需要创建一个 py_db 数据库。以下是连接数据库的代码示例:

        import pymysql# 获取数据库连接dbConn = pymysql.connect(    host='localhost',    port=3306,    user='root',    password='***',    database='py_db',    cursorclass=pymysql.cursors.DictCursor)# 创建游标对象cursor = dbConn.cursor()# 查询结果print(cursor)

        游标操作

        游标是数据库操作的核心工具,用于执行增删改查操作。操作完成后,务必释放游标和数据库连接:

      3. 获取游标:
      4. cursor = dbConn.cursor()
        1. 释放游标:
        2. cursor.close()

          数据库表的创建

          使用 execute() 方法执行 SQL 语句创建表:

          create_table_sql = """    CREATE TABLE `t_user` (        `id` bigint NOT NULL AUTO_INCREMENT,        `user_name` varchar(145) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,        `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,        `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,        `age` int DEFAULT NULL,        `birthday` date DEFAULT NULL,        PRIMARY KEY (`id`)    ) ENGINE=InnoDB"""

          执行创建表操作:

          res = cursor.execute(create_table_sql)print(res)  # 0cursor.close()dbConn.close()

          插入操作

          PyMySQL 提供了多种方法执行插入操作,包括 execute()executemany() 和参数化查询。

          插入一条记录

          insert_sql = """    INSERT INTO `t_user` (        `user_name`,         `password`,         `sex`,         `age`,         `birthday`    )     VALUES (%s, %s, %s, %s, %s)"""try:    insert_data = ("赵云", "123456", "男", 20, "2023-02-13")    res = cursor.execute(insert_sql, insert_data)    print(res)  # 1    dbConn.commit()except:    dbConn.rollback()finally:    cursor.close()    dbConn.close()

          使用变量传递参数

          import timeinsert_sql = """    INSERT INTO `t_user` (        `user_name`,         `password`,         `sex`,         `age`,         `birthday`    )     VALUES (%s, %s, %s, %s, %s)"""try:    insert_data = ("赵云2", "123456", "男", 18, time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))    res = cursor.execute(insert_sql, insert_data)    print(res)  # 1    dbConn.commit()except:    dbConn.rollback()finally:    cursor.close()    dbConn.close()

          插入多条记录

          import timeinsert_sql = """    INSERT INTO `t_user` (        `user_name`,         `password`,         `sex`,         `age`,         `birthday`    )     VALUES (%s, %s, %s, %s, %s)"""insert_datas = [    ("赵子龙1", "123456", "男", 18, time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())),    ("赵子龙2", "123456", "男", 19, time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())),    ("赵子龙3", "123456", "男", 20, time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))]try:    res = cursor.executemany(insert_sql, insert_datas)    print(res)  # 3    dbConn.commit()except:    dbConn.rollback()finally:    cursor.close()    dbConn.close()

          更新操作

          update_sql = """    UPDATE `t_user`     SET         `user_name` = %s,         `password` = %s,         `sex` = %s,         `age` = %s     WHERE `id` = %s"""update_data = ("安琪拉", "123456", "女", 18, 2)try:    res = cursor.execute(update_sql, update_data)    print(res)  # 1    dbConn.commit()except:    dbConn.rollback()finally:    cursor.close()    dbConn.close()

          删除操作

          delete_sql = """    DELETE FROM `t_user`     WHERE `id` = %s"""delete_datas = [1, 2]try:    res = cursor.executemany(delete_sql, delete_datas)    print(res)  # 2    dbConn.commit()except:    dbConn.rollback()finally:    cursor.close()    dbConn.close()

          查询操作

          PyMySQL 提供了多种查询方法,如 fetchone()fetchall()fetchmany()

          查询单条记录

          select_sql = """    SELECT *     FROM `t_user`     WHERE id = %s"""select_data = (5)try:    cursor.execute(select_sql, select_data)    res = cursor.fetchone()    print(res)  # {'id': 5, 'user_name': '赵子龙1', 'password': '123456', 'sex': '男', 'age': 18, 'birthday': '2023-02-13'}except:    raisefinally:    cursor.close()    dbConn.close()

          查询多条记录

          select_sql = """    SELECT *     FROM `t_user`     WHERE id >= %s     AND sex = %s"""select_data = (5, "男")try:    cursor.execute(select_sql, select_data)    res = cursor.fetchmany(5)    for row in res:        print(row)        print(f"id={row['id']}, username={row['user_name']}, password={row['password']}, sex={row['sex']}, age={row['age']}, birthday={row['birthday']}")except:    raisefinally:    cursor.close()    dbConn.close()

          事务机制

          PyMySQL 支持事务操作,事务具有原子性、一致性、隔离性和持久性。默认情况下,数据库操作会隐式开始一个事务,操作完成后需显式提交或回滚。

          提交事务

          dbConn.commit()

          回滚事务

          dbConn.rollback()

          总结

          PyMySQL 是一个功能强大的库,适合用于连接和操作 MySQL 数据库。通过掌握以上操作,开发者可以轻松实现数据库的增删改查操作,并通过事务机制确保数据的完整性。

    转载地址:http://ivofk.baihongyu.com/

    你可能感兴趣的文章
    Python Selenium实现自动化测试及Chrome驱动使用!
    查看>>
    Python Selenium搭建UI自动化测试框架
    查看>>
    Python Selenium模块详解
    查看>>
    Python selenium爬取影评生成词云图
    查看>>
    python selenium自动化测试报告
    查看>>
    Python selenium自动化测试框架实战 —— 登录测试案例
    查看>>
    Python Selenium设计模式 —— POM
    查看>>
    Python Serial:如何使用 read 或 readline 函数一次读取多个字符
    查看>>
    Python set([]) 如何检查两个对象是否相等?一个对象需要定义哪些方法来自定义它?
    查看>>
    Python setup.py:数据文件无法复制目录:不存在或不是常规文件
    查看>>
    Python setuptools sdist:仅安装版本化文件
    查看>>
    Python Shell下使用matplotlib
    查看>>
    Python Slice How-to,我知道Python Slice,但我怎么才能使用内置的Slice对象呢?
    查看>>
    python socket分包发送数据
    查看>>
    python socket模块_Python socket模块实现TCP服务端客户端
    查看>>
    Python SOCKS5代理客户端HTTPS
    查看>>
    Python Soc网络分析:通过使用函数迭代列表来计算机会网络
    查看>>
    Python SQL和NoSQL数据库操作实战
    查看>>
    python string 运算
    查看>>
    Python subprocess ffmpeg
    查看>>