Python 基础教程

Python 高级教程

Python 相关应用

Python 笔记

Python 操作 MySQL 的各库用法详解


Python 操作 MySQL 的库主要有 2 种,一是比较古老的 MySQLdb 库,另一个是 pymysql 库。除此之外,有很多基于两者的包装库,如 mysqldb-rich、pymysql-pooling 等,也有针对 Web 应用的 ORM 框架,如 SQLAlchemy,它底层是要借助于 MySQLdb、pymysql 等第三方库来完成,目前 SQLAlchemy 在 Web 编程领域应用广泛。

pymysql

PyMySQL 是一个纯 python 编写的 client 库,替代 MySQLdb 而生,同时接口兼容 MySQLdb,支持 python3,开源代码网址 https://github.com/PyMySQL/PyMySQL

安装

安装非常简便:

pip install pymysql

也可以离线安装,先下载相应的包文件,然后执行如下命令:

pip install pymysql-x.x.x.tar.gz

连接

通过调用 connect 函数获取一个连接对象(内部实例化一个 Connection 类):

import pymysql


def connect_db():
    return pymysql.connect(
        host='x.x.x.x',
        port=3306,
        user='xxx',
        password='xxxx',
        database='xxxxx',
        charset='utf8'
    )

插入

import pymysql


def insert_data(tb: str, conn: pymysql.Connection):
    cur = conn.cursor()
    sql = 'INSERT INTO {table} (post_id) VALUES (1), (2), (3)'.format(table=tb)
    cur.execute(sql)
    cur.close()
    conn.commit()
    conn.close()

查询

pymysql 查询数据通过 cursor 游标对象获取真正的数据:

import pymysql


def select_data(tb: str, conn: pymysql.Connection):
    cur = conn.cursor()
    sql = 'SELECT * FROM {table}'.format(table=tb)
    cur.execute(sql)
    result = cur.fetchone()
    print(type(result), result)
    cur.close()

fetchone() 函数表示通过游标最多只获取一条数据;获取指定条数数据可以使用 fetchmany(size) 函数;获取所有的数据用 fetchall() 函数。

需要注意的是游标获取的不管是单条还是多条数据,都是 tuple(元组)类型,一条数据的话,一层元组;若是多条数据,则是两层元组。

删除

删除操作将 sql 语句放入执行函数即可:

import pymysql


def delete_from_table(tb: str, conn: pymysql.Connection):
    cur = conn.cursor()
    sql = 'DELETE FROM {table}'.format(table=tb)
    cur.execute(sql)
    cur.close()
    conn.commit()
    conn.close()

相关推荐