【Python - 类库 - PyMySQL】(02)使用“PyMySQL“插入变量

使用 PyMySQL 插入变量

在使用 PyMySQL 操作 MySQL 数据库时,可以通过占位符将变量传递给 SQL 语句,从而实现动态插入数据。这种方法不仅简化了代码,还能有效防止 SQL 注入。

示例代码

以下是一个将学生信息插入数据库的示例:

python 复制代码
import pymysql

# 建立数据库连接

connection = pymysql.connect(
    host='localhost',
    user='root',
    password='password',
    db='student_db',
    charset='utf8mb4',
    cursorclass=pymysql.cursors.DictCursor
)

try:
    # 创建游标对象
    cursor = connection.cursor()

    # 定义变量
    name = 'Alice'
    gender = 'Female'
    age = 18

    # 插入语句,使用占位符 %s
    sql = "INSERT INTO student (name, gender, age) VALUES (%s, %s, %s)"

    # 执行插入操作
    cursor.execute(sql, (name, gender, age))

    # 提交事务
    connection.commit()

    print("数据插入成功!")
finally:
    # 关闭游标和连接
    cursor.close()
    connection.close()
注意事项
  1. **占位符使用 **%s:无论变量类型是字符串、数字还是其他类型,都统一使用 %s
  2. 防止 SQL 注入:通过参数化查询,避免直接拼接字符串带来的安全风险。
  3. 事务管理 :执行插入操作后需调用 commit() 提交事务,否则更改不会生效。
  4. 关闭资源:操作完成后,务必关闭游标和数据库连接以释放资源。

这种方法适用于大多数场景,尤其是在需要动态传递多个变量时,能显著提高代码的可读性和安全性。

相关推荐
小陈工16 分钟前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
A__tao4 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
研究点啥好呢5 小时前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
迷藏4945 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
明日清晨5 小时前
python扫码登录dy
开发语言·python
bazhange6 小时前
python如何像matlab一样使用向量化替代for循环
开发语言·python·matlab
人工干智能6 小时前
科普:python中你写的模块找不到了——`ModuleNotFoundError`
服务器·python
unicrom_深圳市由你创科技6 小时前
做虚拟示波器这种实时波形显示的上位机,用什么语言?
c++·python·c#
小敬爱吃饭6 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
宸津-代码粉碎机6 小时前
Spring Boot 4.0虚拟线程实战调优技巧,最大化发挥并发优势
java·人工智能·spring boot·后端·python