pymysql

一、概要

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,

二、PyMySQL 安装

pip install pymysql

三、操作流程

  1. 创建connection
  2. 获取cursor
  3. 执行增删改查的操作
  4. 处理数据
  5. 关闭cursor
  6. 关闭connection

四、核心类介绍

1、创建connection

  1. 说明

  2. 语法格式

    conn = pymysql.connect(host=None, user=None, password="",
    database=None, port=0, db=None,charset='')
  3. 常用参数说明

    参数名 类型 说明
    host String MySQL的服务器地址
    port int MySQL的端口号
    user String 用户名
    passwd String 密码
    db String 使用的数据库
    charset String 连接字符集
  4. 返回值

    cursor

  5. 示例代码

    HOST = '127.0.0.1'
    PORT = 3306
    USER = 'root'
    PASSWD = 'root'
    DB = 'python'
    CHARSET = 'utf8' connection = pymysql.connect(host=HOST,
    port=PORT,
    user=USER,
    passwd=PASSWD,
    db=DB,
    charset=CHARSET)
  6. 其它方法

    方法 描述
    begin() 开启事务
    commit() 提交事务
    cursor(cursor=None) 创建一个游标用来执行语句
    ping(reconnect=True) 检查连接是否存活,会重新发起连接
    rollback() 回滚事务
    close() 关闭连接
    select_db(db) 选择数据库
    show_warnings() 查看warning信息
  7. 详细

    • host – 数据库服务器所在的主机。
    • user – 登录用户名。
    • password – 登录用户密码。
    • database – 连接的数据库。
    • port – 数据库开放的端口。(默认: 3306)
    • bind_address – 当客户端有多个网络接口时,请指定连接到主机的接口,参数可以是主机名或IP地址。
    • unix_socket – 使用unix套接字而不是tcp/ip。
    • charset – 连接字符集。
    • sql_mode – 默认SQL模式。
    • read_default_file – 指定my.cnf文件路径,以便从[client]部分读取参数。
    • conv – 要使用的转换字典,而不是默认值。
    • use_unicode – 是否默认为unicode字符串,对于Py3k,此选项默认为true。
    • client_flag – 发送到MySQL的自定义标志。
    • cursorclass – 使用自定义的游标类。
    • init_command – 建立连接时要运行的初始SQL语句。
    • connect_timeout – 建立连接超时时间。(默认: 10,最小: 1,最大: 31536000)
    • read_default_group – 从配置文件中读取组。
    • compress – 不支持
    • named_pipe – 不支持
    • autocommit – 设置自动提交模式,不设置意味着使用数据库默认。(默认值: False)
    • local_infile – 是否启用“LOAD LOCAL INFILE”命令的使用。(默认值: False)
    • max_allowed_packet – 发送到服务器的数据包的最大大小 (以字节为单位,默认值: 16MB),仅用于限制小于默认值 (16KB) 的 “LOAD LOCAL INFILE” 数据包的大小。
    • defer_connect – 不要显式连接建设,等待连接调用。(默认值: False)
    • db – 连接数据库别名(兼容MySQLdb)
    • passwd – 密码输入别名(兼容MySQLdb)
    • binary_prefix – 在bytes和bytearray上添加_binary前缀(默认: False)

2、获取cursor对象

  1. 说明

    游标对象,用于执行查询和获取结果

  2. 核心方法

    方法名 说明
    execute() 用于执行一个数据库的查询命令
    fetchone() 获取结果集中的下一行
    fetchmany(size) 获取结果集中的下(size)行
    fetchall() 获取结果集中剩下的所有行
    rowcount 最近一次execute返回数据/影响的行数
    close() 关闭游标
  3. 举个栗子

    1、执行查询功能

    with connection.cursor() as cursor:
    sql = 'select * from home_user'
    cursor.execute(sql)
    results = cursor.fetchall()
    connection.commit()
    for results in results:
    uid = results[0]
    name = results[1]
    password = results[2]
    print('==========用户信息===============')
    print('用户id: {id} \n用户名: {name}\n密码: {pwd}'.format(id=uid, name=name, pwd=password))
  4. 详细

    方法 描述
    close() 关闭游标。
    execute(query, args=None) 执行单条语句,传入需要执行的语句,是string类型;同时可以给查询传入参数,参数可以是tuple、list或dict。执行完成后,会返回执行语句的影响行数,如果有的话。
    executemany(query, args) 执行多条INSERT语句,传入需要执行的语句;同时可以给查询传入参数,参数是一个mappings序列。执行完成后,会返回执行语句的影响行数,如果有的话。
    fetchone() 获取下一行数据。
    fetchall() 获取所有数据。
    fetchmany(size=None) 获取几行数据。
    read_next() 获取下一行数据。
    callproc() 用来调用存储过程。
    mogrify() 参数化查询,防止SQL注入。
    scroll(num,mode) 移动游标位置。

五、基本操作

查询数据

  1. 分页查询操作

    def find_by_page(page, size):
    with pymysql.connect(host=HOST,
    port=PORT,
    user=USER,
    passwd=PASSWORD,
    charset=CHARSET,
    db=DB_NAME) as cursor:
    sql = "SELECT * FROM t_addr LIMIT{},{}".format((page - 1) * size, size)
    cursor.execute(sql)
    user = cursor.fetchall()

事务操作

  1. 示例代码

    conn = pymysql.connect(
    host='10.10.0.109',
    port=3306,
    user='mha',
    password='123456',
    database='sbtest',
    charset='utf8'
    ) cursor = conn.cursor() # 插入sql;
    sql_insert = "insert into t_user (userid,username) values (10,'user10')"
    # 更新sql;
    sql_update = "update t_user set username = 'name91' where userid=9"
    # 删除sql;
    sql_delete = "delete from t_user where userid < 3" # 把一个事务放到一个try块里,如果出现异常就回滚;
    try:
    # 开启事务;
    conn.begin() cursor.execute(sql_insert)
    print(cursor.rowcount) cursor.execute(sql_update)
    print(cursor.rowcount) cursor.execute(sql_delete)
    print(cursor.rowcount) # 提交事务;
    conn.commit() except Exception as e:
    # 若有异常就回滚;
    conn.rollback() cursor.close()
    conn.close()

批量插入

  1. 示例代码

    # 测试事务 批量添加
    def test_batch_insert():
    conn = pymysql.connect(host=HOST,
    port=PORT,
    user=USER,
    passwd=PASSWORD,
    charset=CHARSET,
    db=DB_NAME)
    cursor = conn.cursor()
    try:
    sql = 'INSERT INTO t_addr(PROVICE, CITY, COUNTY, DEATIL, USERID) VALUES (%s,%s,%s,%s,%s)'
    li = []
    for i in range(50):
    li.append(('湖北省', '武汉市', '高新区' + str(i), '智慧园2135', 6))
    # 开启事物
    conn.begin()
    cursor.executemany(sql, li)
    # 提交
    conn.commit()
    except Exception as e:
    conn.rollback()
    print(e)
    # 报错事务回滚
    finally:
    # 关闭连接
    cursor.close()
    conn.close()

pymysql连接和操作Mysql数据库的更多相关文章

  1. robot_framewok自动化测试--(9)连接并操作 MySql 数据库

    连接并操作 MySql 数据库 1.mysql数据库 1.1安装mysql数据库 请参考我的另一篇文章:MYSQL5.7下载安装图文教程 1.2.准备测试数据 请参考我的另一篇文章:Mysql基础教程 ...

  2. spring boot ----> jpa连接和操作mysql数据库

    环境: centos6.8,jdk1.8.0_172,maven3.5.4,vim,spring boot 1.5.13,mysql-5.7.23 1.引入jpa起步依赖和mysql驱动jar包 &l ...

  3. php连接和操作mysql数据库

    <?php //数据库连接文件:link.php $link = mysql_connect("localhost", "root", "&qu ...

  4. python3操作数据库 借助pycharm快速连接并操作mysql数据库

    1.https://blog.csdn.net/qiushi_1990/article/details/78041299

  5. python3操作MySQL数据库

    安装PyMySQL 下载地址:https://pypi.python.org/pypi/PyMySQL 1.把操作Mysql数据库封装成类,数据库和表先建好 import pymysql.cursor ...

  6. Python MySQLdb模块连接操作mysql数据库实例_python

    mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法.python操作数据库需要安装一个第三方的模块,在http://mysql ...

  7. python 之操作mysql 数据库实例

    对于python操作mysql 数据库,具体的步骤应为: 1. 连接上mysql host 端口号 数据库 账号 密码2. 建立游标3. 执行sql(注意,如果是update,insert,delet ...

  8. python接口自动化(三十八)-python操作mysql数据库(详解)

    简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...

  9. Python操作MySQL数据库(步骤教程)

    我们经常需要将大量数据保存起来以备后续使用,数据库是一个很好的解决方案.在众多数据库中,MySQL数据库算是入门比较简单.语法比较简单,同时也比较实用的一个.在这篇博客中,将以MySQL数据库为例,介 ...

随机推荐

  1. crm-权限管理

    1 用户登录 设置session 将权限存放在session中 2 设置中间件,进行拦截 0 添加白名单,判断是否在白名单上 1 判断是否登录 2 权限过滤

  2. 使用Ajax向SpringMVC传递Json数据

    这篇文章已经过时了. 请参考比较合适的前后端交互方式. 1.保证SpringMVC配置成功了. 2.在pom.xml中追加Jackson相关的依赖 <dependency> <gro ...

  3. MySQL数据分析-(3)MySQL软件的安装(Windows版)

    (一)MySQL下载 进入https://www.mysql.com/网页,找到DOWNLOADS然后点击进入页面,在页面中,我们选择社区版Community 点击,选择MySQL Community ...

  4. hive安装运行hive报错通解

    参考博文:https://blog.csdn.net/lsxy117/article/details/47703155 大部分问题还是hadoop的配置文件的问题: 修改配置文件hadoop/conf ...

  5. navicat连接远程数据库报错'client does not support authentication protocol requested by server consider ...'解决方案

    [1.cmd终端连接远程mysql数据库方法] mysql -uhello -pworld   -h192.168.1.88 -P3306 -Dmysql_oa mysql -u用户名 -p密码 -h ...

  6. powderdesinger显示中英文表名

     菜单->Tool->Model Options->Name Convention->右侧display中选择显示name还是code.不支持同时显示,但可以选择显示code, ...

  7. [MyBatis]浅谈如何实现事务处理

    要实现事务处理,就得从SqlSession中取出connection来,然后对connection采用setAutoCommit,commit,rollback等操作,最后的时候,不能像JDBC一样关 ...

  8. ThinkPHP6.0学习之安装及问题解决

    ThinkPHP6.0学习之安装及问题解决 ThinkPHP6.0开发版已经上线了,我已经等了他很久了,现在写一个系列来记录Thinkphp6.0的使用,我们现在从安装开始学习吧. 首先我们要确定Th ...

  9. python笔记6 模块与包 程序开发规范 包 re sys time os模块

    模块与包 python 模块首引用加载到内存,如果再次引用此模块,直接从内存中读取. python文件分为:执行文件(解释器运行的文件),被引用文件(import) 模块引用一共发生了3件事: 1.他 ...

  10. 【NetDevops】网络自动化运维--1获取用户基本信息

     版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.  之前博客的云主机到期了没续费,被删啦最重要的是没有备份!此处省略几个字.....      ...