zoukankan      html  css  js  c++  java
  • Python——MySQL操作,使用mysql.connector

    下载安装mysql-connector

    pip install mysql-connector

    连接MySQL

      主要是使用mysql.connector模块的connect函数,需要注意参数的名称

    import mysql.connector
     
    # 接收参数:user, password, host, port=3306, unix_socket and database
    # 返回一个MySQLConnection Object
    conn = mysql.connector.connect(
        host='localhost',
        user='root',
        password='root',
        database='test'
    )

    select查询操作

      执行select操作,使用fetchall()一次性取回所有的结果集。

    import mysql.connector
     
    # 接收参数:user, password, host, port=3306, unix_socket and database
    # 返回一个MySQLConnection Object
    conn = mysql.connector.connect(
        host='localhost',
        user='root',
        password='root',
        database='test'
    )
     
    # 创建一个查询
    cmd = conn.cursor()
     
    # 执行一条原生的SQL语句,执行结果保存在cmd中,没有返回值
    cmd.execute("select id, name, age from stu")
    # 可以使用fetchall(),获取所有的查询结果集,返回值为一个tuple,每一个元素是一个list
    res = cmd.fetchall()
    print(res)
    # [(1, 'LiMing', 20), (2, 'XiaoHua', 30), (3, 'LiLei', 10)]
    

    insert、update、delete操作

      insert、update、delete操作,也都是使用execute方法,只需要将要执行的sql语句传入即可。

      可以在执行增删改操作之后,rowcount属性保存着受影响的记录数。

      每次插入一条数据

    import mysql.connector
     
    # 接收参数:user, password, host, port=3306, unix_socket and database
    # 返回一个MySQLConnection Object
    conn = mysql.connector.connect(
        host='localhost',
        user='root',
        password='root',
        database='test'
    )
     
    # 创建一个查询
    cmd = conn.cursor()
     
    # 执行原生SQL语句
    cmd.execute("insert into stu (id, name, age) values (4, 'LiBai', 99)")
    print(cmd.rowcount)  # 1
     
    cmd.execute("select * from stu")
    res = cmd.fetchall()
    print(res)
    # [(1, 'LiMing', 20), (2, 'XiaoHua', 30), (3, 'LiLei', 10), (4, 'LiBai', 99)]

    使用预处理格式(占位符格式)

      可以查看一下execute()方法的定义:

    第1个参数是要执行的SQL语句,其中,参数位置先使用占位符来占位

      第2个参数是一个tuple(元组),元素值就是SQL占位符对应的参数,注意只有一个参数的时候,要写成(xxx,),后面的逗号不要忘记。

      第3个参数是一个bool值,表示第一个参数是不是多个SQL语句,如果是的话,就传入True,否则传入False。

    使用实例

    import mysql.connector
     
    conn = mysql.connector.connect(
        host='localhost',
        user='root',
        password='root',
        database='test'
    )
     
    cmd = conn.cursor()
     
    # 注意,在SQL中的占位符,统一写%s, 具体的类型,是在tuple中,传入的参数元素类型决定
    cmd.execute("select * from stu where id=%s and name=%s", (1, 'LiMing'))
    res = cmd.fetchall()
    print(res)
    # [(1, 'LiMing', 20)]
    

      

      

  • 相关阅读:
    ThreadLocal源码分析与实践
    基于jdk1.8的LinkedList源码分析
    Spring编程式事务使用不当导致其他事务无法正常提交
    Spring计时器StopWatch使用
    工厂模式(Factory pattern)
    Spring Cloud Alibaba生态探索:Dubbo、Nacos及Sentinel的完美结合
    Spring Cloud Alibaba微服务生态的基础实践
    自己作图分析分布式技术架构演化的常用套路
    用一个实例项目重新认识分布式系统
    重温Java Web的技术细节
  • 原文地址:https://www.cnblogs.com/kwzblog/p/14199119.html
Copyright © 2011-2022 走看看