以下是使用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 数据库、创建数据表、查询数据等操作,并且给出了两个示例代码供参考。