MySQL 笔记9 -- PyMySQL

版权声明: https://blog.csdn.net/Wang_Jiankun/article/details/83897361

MySQL 笔记9 – PyMySQL


MySQL 系列笔记是笔者学习、实践MySQL数据库的笔记

参考文档:
MySQL 官方文档
SQL 教程
PyMySQL官方文档


一、基础


1、简介

  • PyMySQL 是 Python 连接 MySQL 的驱动程序库
  • 采用纯Python编写,运行效率相对较低,但可以和Python无缝连接

2、安装及导入

安装:

pip install PyMySQL

导入:

import pymysql

二、使用


1、PyMySQL 库

  • 原理:PyMySQL 连接MySQL,然后把用SQL语言编写的操作数据库指令传递给MySQL,最后 MySQL 把结果返回供 PyMySQL 读取
  • PyMySQL 库只有两个类:连接类(Connection)、游标类(Cursor)
    • Connection:连接 MySQL
    • Cursor:与 MySQL 进行交互,传送指令,读取结果

2、连接对象(Connection Objects)

获取连接对象:

pymysql.connect(host=None, user=None, password='', database=None, port=0)

参数:

  • host:MySQL的主机IP地址,本机可使用 ‘localhost’ / 127.0.0.1
  • user:登入用户名,MySQL 初始只有 ‘root’ 管理员用户
  • password:登入密码
  • database:连接的数据库名
  • port:端口号,默认 3306
  • 还有很多可选参数,具体可查看官方文档

属性和方法:

属性/方法 说明
.autocommit_mode 提交模式,默认为None 不自动提交
.open 是否已连接,是返回 True,反之
.begin() 开始事务(transaction)
.commit() 提交事务
.close() 关闭数据库连接
.cursor(cursor=None) 创建游标对象
.ping(reconnect=True) 重新连接
.rollback() 事务回滚
.select_db(db) 选择数据库,db:数据库名称
.show_warnings() 发送’SHOW WARNINGS’ 的 SQL 命令
  • 每一次 .commit() 之前的所有SQL命令形成一个事务
  • .commit() 之后默认开启事务

3、游标对象(Cursor Objects)

获取游标对象:

pymysql.connect(...).cursor()

属性和方法:

属性/方法 说明
.execute(query, args=None) 执行命令,query:SQL命令str类型,args:额外参数,tuple、list or dict
.close() 释放cursor对象
.executemany(query, args) 执行多条命令,返回 Number of rows affected
.fetchall() 获取所有行
.fetchmany(size=None) 获取size行
fetchone() 获取一行
  • execute() 中,如果 args 是 list/tuple,用 %s 传入query ;如果是dict,用%(name)s

4、异常

异常 说明
Warning 当有严重警告时触发,例如插入数据是被截断等等。必须是 StandardError 的子类。
Error 警告以外所有其他错误类。必须是 StandardError 的子类。
InterfaceError 当有数据库接口模块本身的错误(而不是数据库的错误)发生时触发。 必须是Error的子类。
DatabaseError 和数据库有关的错误发生时触发。 必须是Error的子类。
DataError 当有数据处理时的错误发生时触发,例如:除零错误,数据超范围等等。 必须是DatabaseError的子类。
OperationalError 指非用户控制的,而是操作数据库时发生的错误。例如:连接意外断开、 数据库名未找到、事务处理失败、内存分配错误等等操作数据库是发生的错误。 必须是DatabaseError的子类。
IntegrityError 完整性相关的错误,例如外键检查失败等。必须是DatabaseError子类。
InternalError 数据库的内部错误,例如游标(cursor)失效了、事务同步失败等等。 必须是DatabaseError子类。
ProgrammingError 程序错误,例如数据表(table)没找到或已存在、SQL语句语法错误、 参数数量错误等等。必须是DatabaseError的子类。
NotSupportedError 不支持错误,指使用了数据库不支持的函数或API等。例如在连接对象上 使用.rollback()函数,然而数据库并不支持事务或者事务已关闭。 必须是DatabaseError的子类。

三、实例


import pymysql

# 连接数据库
connection = pymysql.connect(host='localhost',
                             user='root',
                             password='1234',
                             db='test',
                             charset='utf8')

try:
    # 获取cursor,with语句结束后cursor自动close()
    with connection.cursor() as cursor:
        # 插入一行
        sql = "INSERT INTO info(email, password) VALUES(%s, %s)"
        cursor.execute(sql, ('[email protected]', 'secret'))
    # 提交事务
    connection.commit()
    
    with connection.cursor() as cursor:
        # 读取记录
        sql = "SELECT id,password FROM info WHERE email=%s"
        cursor.execute(sql, ('[email protected]',))
        result = cursor.fetchone()
        print(result)

except Exception as e:
    # 发生错误时回滚
    print(e)
    connection.rollback()
finally:
    # 关闭连接
    connection.close()

GOOD LUCK!


猜你喜欢

转载自blog.csdn.net/Wang_Jiankun/article/details/83897361
今日推荐