Python 基础教程

Python 高级教程

Python 相关应用

Python 笔记

Python FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/python-mysql.html

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()

相关推荐

MySQL ISNULL 函数用来判断指定表达式(通常是字段)是否为 NULL,如果是空,返回 1,否则返回 0。 ...
MySQL 的 DML 遵守 SQL 的 DML 规范,数据操作语言(Data Manipulation Language),它主要用于添加 ...
MySQL 中 CAST 函数可以将指定的变量值转化为指定的类型。 ...
mysql 中,插入数据的 sql 有很多种形式,除了标准 sql 支持的 INSERT INTO table_name (col1, co ...
在Java中进行文件操作有多种方式,下面我将列出一些常见的文件操作方式,并为每种方式提供详细的步骤、示例代码以及Maven和Gradle的依 ...