You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的SQL命令中使用存储平均薪资的Python变量?

在pymysql中使用Python变量执行SQL命令的方法

当然可以在后续的SQL命令里使用这个Python变量啦!结合你用pymysql的场景,我给你两种实现方式,重点推荐安全的参数化查询:

一、推荐:参数化查询(防止SQL注入)

这是pymysql官方推荐的方式,既能安全地传递变量,还能自动处理数据类型转换,完全不用担心引号或者SQL注入的问题。

假设你已经把平均薪资存在变量里:

avg_salary = 51777  # 建议转成数值类型,因为薪资是数字

接下来用参数化方式执行SQL的示例代码:

import pymysql

# 你的原有连接代码
connection = pymysql.connect(host="...", user="...", passwd="...", db="...")
cursor = connection.cursor()

# 示例:查询平均薪资高于目标值的职位
# 用%s作为变量占位符,注意不要加引号
sql = "SELECT title, avg(salaries) FROM employees WHERE avg(salaries) > %s GROUP BY title;"
# 执行时把变量放在元组里传入,即使只有一个变量也要加逗号
cursor.execute(sql, (avg_salary,))

# 获取结果
result = cursor.fetchall()
for row in result:
    print(f"职位:{row[0]},该职位平均薪资:{row[1]}")

# 记得关闭资源
cursor.close()
connection.close()

二、不推荐:字符串格式化(有SQL注入风险)

虽然可以用f-string或者.format()直接把变量拼进SQL语句,但这种方式非常不安全——如果变量来自用户输入,很容易被恶意利用进行SQL注入攻击。除非你能100%确保变量是安全的(比如自己计算的固定值),否则绝对不要用这种方法:

# 不推荐!仅作示例
sql = f"SELECT title, avg(salaries) FROM employees WHERE avg(salaries) > {avg_salary} GROUP BY title;"
cursor.execute(sql)

另外补充一下,如果你是先查询得到平均薪资,再用它做后续查询,可以把流程整合起来:

# 先获取平均薪资
cursor.execute("SELECT avg(salaries) FROM employees;")
avg_salary = cursor.fetchone()[0]

# 再用参数化方式执行后续查询
sql = "SELECT title, avg(salaries) FROM employees WHERE avg(salaries) > %s GROUP BY title;"
cursor.execute(sql, (avg_salary,))

内容的提问来源于stack exchange,提问作者W. Yan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:47:54