• 技术学习:Python(08)|操作MySQL


    活动地址:CSDN21天学习挑战赛

    🏮1 使用pip安装MySQL

    🎈1.1 什么是PyMySQL

    PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2 中则使用 mysqldb
    PyMySQL的Github主页地址:https://github.com/PyMySQL/PyMySQL
    PyMySQL的最新版本文档地址:https://pymysql.readthedocs.io/en/latest/

    🎈1.2 查看pip的版本

    针对Mac用户,只需要打开终端或者iTerm

    Aion.Local $ pip3 --version
    pip 22.2.2 from /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/pip (python 3.10)
    
    • 1
    • 2

    当然,你也可以使用其他命令查看当前机器的pip版本,pip3 -Vpip3 --help都是一些常用命令,希望记住。

    🎈1.3 升级pip

    Aion.Local $ pip3 install --upgrade pip
    Requirement already satisfied: pip in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (22.2.1)
    Collecting pip
      Using cached pip-22.2.2-py3-none-any.whl (2.0 MB)
    Installing collected packages: pip
      Attempting uninstall: pip
        Found existing installation: pip 22.2.1
        Uninstalling pip-22.2.1:
          Successfully uninstalled pip-22.2.1
    Successfully installed pip-22.2.2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    升级pip也是很简单,一般情况下,使用命令行升级,多数都是使用--upgrade命令来升级。
    在这里插入图片描述

    🎈1.4 使用pip安装pymysql

    安装第三方的mysql,我们只需要按照下面的命令执行就可以了。

    Aion.Local $ pip3 install pymysql
    Collecting pymysql
      Downloading PyMySQL-1.0.2-py3-none-any.whl (43 kB)
         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 43.8/43.8 kB 35.4 kB/s eta 0:00:00
    Installing collected packages: pymysql
    Successfully installed pymysql-1.0.2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    🏮 2 python使用PyMySQL驱动操作MySQL

    🎈 2.1 创建实验表(users)

    首先,我们需要进入我们自己的数据,在我们自己的数据库创建一张实验需要的表。

    DROP TABLE IF EXISTS `users`;
    
    CREATE TABLE `users` (
        `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'ID编号',
    	`username` VARCHAR(128) NOT NULL COMMENT '账号/用户名',
        `email` VARCHAR(255) COLLATE utf8_bin NOT NULL COMMENT '邮箱',
        `password` VARCHAR(255) COLLATE utf8_bin NOT NULL COMMENT '密码',
        PRIMARY KEY (`id`)
    ) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=1 COMMENT '用户表';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    🎈 2.2 使用PyMySQL连接数据库

    连接数据库的参数有很多,我们使用的时候基本上就常用的几个就可以了。具体的连接参数如下:

    pymysql.connections.Connection(*, user=None, password=‘’, host=None, database=None, unix_socket=None, port=0, charset=‘’, sql_mode=None, read_default_file=None, conv=None, use_unicode=True, client_flag=0, cursorclass=, init_command=None, connect_timeout=10, read_default_group=None, autocommit=False, local_infile=False, max_allowed_packet=16777216, defer_connect=False, auth_plugin_map=None, read_timeout=None, write_timeout=None, bind_address=None, binary_prefix=False, program_name=None, server_public_key=None, ssl=None, ssl_ca=None, ssl_cert=None, ssl_disabled=None, ssl_key=None, ssl_verify_cert=None, ssl_verify_identity=None, compress=None, named_pipe=None, passwd=None, db=None)

    我们常用的参数如下:

    import pymysql.cursors
    
    # 连接到数据库
    connection = pymysql.connect(host='localhost',
                                 user='python_study_user',
                                 password='xxxxxx',
                                 database='python_study',
                                 charset='utf8',
                                 cursorclass=pymysql.cursors.DictCursor)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    连接的参数说明:

    • host:数据库服务器的主机
    • user:登录的用户名
    • password:登录的数据库密码
    • database:登录的数据库,如果是None 表示不使用特定的数据库
    • charset:编码字符集
    • cursorclass:自定义光标类

    其他参数请参考官方提供的文档:connections

    🎈 2.2 操作数据库|INSERT

    with connection.cursor() as cursor:
        # 插入一条记录
        sql = "INSERT INTO `users` (`username`, `email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('Aion.Liu', 'Aion.Liu@gmail.com', 'Aion!@#QAZ_0808'))
    
        # 手工提交.
        connection.commit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    🎈 2.3 操作数据库|SELECT

    with connection.cursor() as cursor:
        # 读取数据
        sql = "SELECT `id`, `username`, `password` FROM `users` WHERE `email`=%s"
        cursor.execute(sql, ('Aion.Liu@gmail.com',))
        result = cursor.fetchone()
        print(result)
    
    # 打印的结果
    {'id': 1, 'username''Aion.Liu', 'password': 'Aion!@#QAZ_0808'}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    当然,可以多执行几次,看下效果:
    在这里插入图片描述
    在这里插入图片描述
    下面,我们看下数据库的数据:
    在这里插入图片描述

    🎈 2.4 遇到的问题和解决方法

    Q1:由于我升级了Python的版本,也升级了pip的版本,导致在执行过程中,出现找不到 pymysql 模块

    import pymysql.cursors
    ModuleNotFoundError: No module named 'pymysql'
    
    • 1
    • 2

    解决方法:

    # 👇️ 没有PyMySQL,需要安装
    pip install PyMySQL
    
    # 👇️ python 3 中没有PyMySQL,需要安装(pip3.10 依赖)
    pip3 install PyMySQL
    
    # 👇️ 没有权限错误
    sudo pip3 install PyMySQL
    
    # 👇️ 环境中没有pip
    python -m pip install PyMySQL
    
    # 👇️ python 3 中没有PyMySQL,需要安装(pip3.10 依赖)
    python3 -m pip install PyMySQL
    
    # 👇️ for Anaconda 环境
    conda install -c anaconda pymysql
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    面包店收银系统怎么选
    【Mapbox GL JS 入门】Hello world
    深入浅出学习透析Nginx服务器的基本原理和配置指南「初级实践篇 」
    HCIP(第十六天)
    抖 X-Bongus 参数逆向 python案例实战
    trace clock structure的若干方法
    ssh 免密码登录
    petite-vue源码剖析-双向绑定`v-model`的工作原理
    1688搜索店铺列表 API
    Java指令重排序在多线程环境下的应对策略
  • 原文地址:https://blog.csdn.net/L_Lycos/article/details/126235936