使用python连接mysql数据库之pymysql模块的使用

  • Post category:Python

以下是使用python连接mysql数据库之pymysql模块的使用攻略:

1. 介绍

PyMySQL 模块是 Python3.x supports 的一个纯 Python MySQL 驱动程序。MySQLdb 这个包目前不支持 Python3.x 。 PyMySQL 使用纯 Python 编写,依赖 Connector/Python 实现绝大部分 MySQL 功能。PyMySQL的性能和MySQLdb相当,甚至还略高一些。

2. 安装 PyMySQL

可以使用 pip 直接安装 PyMySQL,命令如下:

pip install pymysql

如果上述命令安装失败,则需尝试使用以下命令:

sudo apt-get mysql-client
sudo apt install python3-dev libmysqlclient-dev
pip install mysqlclient

上述步骤根据系统与安装环境,会略有不同。如果操作系统是 Windows 系统,可以先访问 PyMySQL 的官方页面:https://pypi.org/project/PyMySQL/ 下载对应的安装包,然后安装即可。

3. 连接 MySQL 数据库

连接 MySQL 数据库需要使用 PyMySQL 模块的 connect() 方法,该方法包含了 MySQL 数据库连接所需的参数。关于 connect() 方法的参数说明如下:

connect(host=None, user=None, password='', database=None, port=0, unix_socket=None, charset='', sql_mode=None, read_timeout=None, write_timeout=None, use_ansi=None, autocommit=False, local_infile=False, max_allowed_packet=None, ssl=False, connec
tion_timeout=None, auth=None, cursorclass=<class 'pymysql.cursors.Cursor'>, binary_prefix=False, **kwargs)

必须指定的参数如下:

  • host:MySQL 数据库所在的主机地址。
  • user:连接 MySQL 数据库的用户名。
  • password:连接 MySQL 数据库的密码。

下面是一个连接 MySQL 数据库的示例代码:

import pymysql

conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='test_db', charset='utf8')

其中,host 参数的值为 ‘localhost’ 表示 MySQL 数据库在本机,port 参数的值为 3306,是 MySQL 数据库默认使用的端口号,user 是连接 MySQL 数据库的用户名,password 是连接 MySQL 数据库的密码,database 是你要连接的数据库名。

4. 创建数据表

用于操作 MySQL 数据表的 PyMySQL 方法主要有 execute()fetchall()fetchone()fetchmany()commit()

下面是一个创建数据表的示例代码:

import pymysql

conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='test_db', charset='utf8')
cursor = conn.cursor()

create_table_sql = '''
    CREATE TABLE users (
        id INT NOT NULL AUTO_INCREMENT,
        name VARCHAR(20) NOT NULL,
        age INT NOT NULL,
        birthday DATE NOT NULL,
        PRIMARY KEY (id)
    )
'''

cursor.execute(create_table_sql)
conn.commit()

cursor.close()
conn.close()

其中,我们使用了 execute() 方法来执行创建数据表的 SQL 语句,使用 commit() 方法来提交创建数据表操作,最后关闭了 cursor 和连接对象。

5. 查询数据

查询数据表的内容主要是执行 SELECT 语句,可以使用 execute() 方法执行 SELECT 语句,然后使用 fetchall() 方法获取查询结果。下面是一个查询数据表的示例代码:

import pymysql

conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='test_db', charset='utf8')
cursor = conn.cursor()

select_sql = '''
    SELECT * FROM users
'''

cursor.execute(select_sql)
result = cursor.fetchall()
for row in result:
    print(row)

cursor.close()
conn.close()

其中,我们使用了 execute() 方法来执行查询数据表的 SQL 语句,使用 fetchall() 方法获取查询结果,最后遍历结果并输出内容,最后关闭了 cursor 和连接对象。

6. 使用参数模板查询数据

在实际操作中,我们经常需要使用参数模板(Parameterized Template)来查询数据表的内容。参数模板的好处是可以防止 SQL 注入攻击,在一些输入变量可能被当成 SQL 语句的情况下,参数模板显得尤为必要。下面是一个使用参数模板查询数据表的示例代码:

import pymysql

conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='test_db', charset='utf8')
cursor = conn.cursor()

name = 'Tom'
select_sql = '''
    SELECT * FROM users WHERE name=%s
'''

cursor.execute(select_sql, (name,))
result = cursor.fetchall()
for row in result:
    print(row)

cursor.close()
conn.close()

其中,我们使用了参数模板 %s,使用元组传入参数变量 (name,),最后遍历结果并输出内容,最后关闭了 cursor 和连接对象。

这就是使用 Python 连接 MySQL 数据库之 PyMySQL 模块的完整攻略,其中包含了连接 MySQL 数据库、创建数据表、查询数据等操作,并且给出了两个示例代码供参考。