Python 连接 mysql 详解(mysql-connector-python)

2024-06-08 1015阅读

文章目录

  • 1 概述
    • 1.1 第三方库:mysql-connector-python
    • 1.2 可视化工具:navicat
    • 1.3 创建测试数据库
    • 2 连接 mysql 数据库
      • 2.1 创建一个连接
      • 2.2 捕获连接异常
      • 2.3 从配置文件中获取连接信息
      • 3 执行 sql 语句
        • 3.1 插入、更新、删除
        • 3.2 查询

          1 概述

          1.1 第三方库:mysql-connector-python

          pip install mysql-connector-python
          

          1.2 可视化工具:navicat

          Python 连接 mysql 详解(mysql-connector-python)

          1.3 创建测试数据库

          Python 连接 mysql 详解(mysql-connector-python)

          -- 创建数据库
          create database python_demo DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
          -- 创建测试表
          create table python_demo.student(
            sno      int unsigned auto_increment comment '学号',
          	sname    varchar(30) not null comment '姓名',
          	age      int comment '年龄',
          	birthday date comment '出生日期',
            primary key(sno)
          ) engine=innodb default charset=utf8 comment '学生信息表';
          

          2 连接 mysql 数据库

          2.1 创建一个连接

          import mysql.connector
          # 配置连接信息
          conn = mysql.connector.connect(
              host='127.0.0.1',
              port='3306',
              user='root',
              password='12345',
              database='python_demo'
          )
          # 当前 mysql 版本号
          print(conn.get_server_version())
          

          2.2 捕获连接异常

          import mysql.connector
          from mysql.connector import errorcode
          try:
              # 配置连接信息
              conn = mysql.connector.connect(
                  host='127.0.0.1',
                  port='3306',
                  user='root',
                  password='12345',
                  database='python_demo'
              )
              # 当前 mysql 版本号
              print(conn.get_server_version())
              # 捕获异常
          except mysql.connector.Error as err:
              if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
                  print('账号或密码错误!')
              elif err.errno == errorcode.ER_BAD_DB_ERROR:
                  print('数据库不存在!')
              else:
                  print(err)
          else:
              # 关闭连接
              conn.close()
          

          2.3 从配置文件中获取连接信息

          目录结构:

          Python 连接 mysql 详解(mysql-connector-python)

          config.ini:

          [mysql]
          host = 127.0.0.1
          port = 3306
          user = root
          password = 12345
          database = python_demo
          

          m1.py:

          import mysql.connector
          from mysql.connector import errorcode
          import configparser
          # 创建配置解析器对象
          config = configparser.ConfigParser()
          # 读取配置文件
          config.read('config.ini')
          try:
              # 配置连接信息
              conn = mysql.connector.connect(
                  host=config.get('mysql', 'host'),
                  port=config.get('mysql', 'port'),
                  user=config.get('mysql', 'user'),
                  password=config.get('mysql', 'password'),
                  database=config.get('mysql', 'database')
              )
              # 当前 mysql 版本号
              print(conn.get_server_version())
              # 捕获异常
          except mysql.connector.Error as err:
              if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
                  print('账号或密码错误!')
              elif err.errno == errorcode.ER_BAD_DB_ERROR:
                  print('数据库不存在!')
              else:
                  print(err)
          else:
              # 关闭连接
              conn.close()
          

          3 执行 sql 语句

          3.1 插入、更新、删除

          • execute():用来执行 sql 语句,如:增删改查,存储过程等
          • commit():用来提交事务
            import mysql.connector
            # 配置连接信息
            conn = mysql.connector.connect(
                host='127.0.0.1',
                port='3306',
                user='root',
                password='12345',
                database='python_demo'
            )
            # 创建游标对象
            cursor = conn.cursor()
            # 操作数据:插入、修改、删除 同理,注:数据类型均可用 %s
            # 操作一条数据
            sql = 'insert into student(sname, age, birthday) values(%s, %s, %s);'
            param = ('张三', '18', '1994-12-08')
            cursor.execute(sql, param)
            # 操作多条数据
            sql = 'insert into student(sname, age, birthday) values(%s, %s, %s);'
            param = [('李四', '20', '1992-10-05'),
                     ('王五', '16', '1996-05-26'),
                     ('赵六', '08', '1994-05-26')]
            cursor.executemany(sql, param)
            # 提交数据
            conn.commit()
            # 关闭游标和数据库连接
            cursor.close()
            conn.close()
            

            3.2 查询

            import mysql.connector
            # 配置连接信息
            conn = mysql.connector.connect(
                host='127.0.0.1',
                port='3306',
                user='root',
                password='12345',
                database='python_demo'
            )
            # 创建游标对象
            cursor = conn.cursor()
            # 查询数据
            sql = 'select sno, sname, age, birthday from student where sno >= %s'
            param = (1,)
            cursor.execute(sql, param)
            result = cursor.fetchall()
            # 打印结果
            for row in result:
                print(row)
            # 关闭游标和数据库连接
            cursor.close()
            conn.close()
            
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]