1. 单个参数传参
在使用pyMySQL操作数据库时,如果要执行的SQL语句中只有一个参数需要传参,可以使用占位符(placeholder)的方式进行传参。具体的步骤如下:
1.1 创建数据库连接
首先需要导入pyMySQL模块,并使用connect方法建立与数据库的连接:
import pymysql
# 建立数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='test', charset='utf8')
# 创建cursor游标对象
cursor = conn.cursor()
1.2 执行SQL语句
在执行SQL语句时,可以使用占位符(%s)来表示待传入的参数。具体步骤如下:
# 定义SQL语句
sql = "SELECT * FROM students WHERE age > %s"
# 执行SQL语句
cursor.execute(sql, (18,))
在上述例子中,SQL语句中使用了一个占位符(%s),然后在execute方法中的第二个参数中传入了具体的参数值(18)。参数值以元组的形式传入,即使只有一个参数也需要使用逗号将其与其他值区分开。
1.3 获取返回结果
执行完SQL语句后,可以通过fetchall、fetchone等方法获取执行结果:
# 获取所有结果
results = cursor.fetchall()
这样就得到了执行SQL语句后的结果集。
2. 多个参数传参
如果SQL语句需要传入多个参数,可以使用字典的方式进行传参,即将参数名与参数值一一对应。具体步骤如下:
2.1 创建数据库连接
同样需要先建立数据库连接:
import pymysql
# 建立数据库连接
conn = pymysql.connect(host='localhost', user='root', password='password', database='test', charset='utf8')
2.2 执行SQL语句
在执行SQL语句时,可以使用字典的方式传入参数。具体步骤如下:
# 定义SQL语句
sql = "SELECT * FROM students WHERE age > %(age)s AND score > %(score)s"
# 定义参数
params = {
'age': 18,
'score': 80
}
# 执行SQL语句
cursor.execute(sql, params)
在上述例子中,SQL语句中的占位符使用了参数名,以%(参数名)s的形式表示。然后在execute方法中的第二个参数中传入了一个字典,字典的键名与SQL语句中的参数名一一对应。
2.3 获取返回结果
同样可以使用fetchall、fetchone等方法获取执行结果:
# 获取所有结果
results = cursor.fetchall()
总结
本文详细介绍了在使用pyMySQL进行SQL语句传参时的方法。单个参数传参可以使用占位符(%s)的方式传参,传参值以元组的形式传入;多个参数传参可以使用字典的方式传参,参数名与参数值一一对应。通过正确的传参方式,可以方便地在SQL语句中引入外部参数,提高代码的灵活性。