MySQL 笔记9 -- PyMySQL

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, ('123@qq.com', 'secret'))
    # 提交事务
    connection.commit()
    
    with connection.cursor() as cursor:
        # 读取记录
        sql = "SELECT id,password FROM info WHERE email=%s"
        cursor.execute(sql, ('123@qq.com',))
        result = cursor.fetchone()
        print(result)

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

GOOD LUCK!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值