python使用插入带有%的字符串到mysql数据库

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: python使用插入带有%的字符串到mysql数据库

使用Navicat插入

新建包含两个字段,分别是id(自增主键),name(姓名)的数据表

CREATE TABLE `student` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` `varchar`(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

在Navicat中使用原生sql直接插入100%

insert into student(name) VALUES ('100%')

返回

Affected rows: 1, Time: 0.001000s

数据库查看,确实插入了

a29.2.png


使用python插入

使用peewee模块链接数据库

import peewee
db = peewee.MySQLDatabase(
    host="localhost",
    port=3306,
    user="root",
    password="123456",
    database="demo",
)
db.execute_sql("insert into student(name) VALUES ('100%')")
db.close()

报错:

TypeError: not enough arguments for format string

可以看出%被格式化字符占用了

解决方法:

1、将sql语句改为

db.execute_sql("insert into student(name) VALUES ('100%%')")

%转义之后就可以正常插入了, 使用%s格式化和 format格式化效果是一样的

这样有个不好的地方,每次传递的参数都需要做修改

2、 execute_sql还有一个参数params,接收一个元组

db.execute_sql("insert into student(name) VALUES (%s)", ("1000%",))

这样也能执行成功,推荐使用此方法,而且还能防止sql注入攻击

a29.3.png


tips: peewee的数据库链接使用完后需要手动关闭下,加一个close,不然会一直占用连接

可参考:

python 防止sql注入字符串拼接的正确用法

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
Python
Python字符串的常见操作
Python字符串的常见操作
31 0
|
5月前
|
索引 Python
16 python - 字符串常见的操作
16 python - 字符串常见的操作
24 0
|
6月前
|
索引 Python
python之字符串中的常见操作
python之字符串中的常见操作
|
8月前
|
中间件 Python Windows
Python怎么删除字符
Python怎么删除字符
|
12月前
|
存储 SQL 关系型数据库
Python 基于Python从mysql表读取千万数据实践
Python 基于Python从mysql表读取千万数据实践
207 0
|
Python
python常用字符串及其操作
python常用字符串及其操作
79 0
python常用字符串及其操作
|
索引 Python
【Python基础篇001】:字符串的最全常用操作方法
【Python基础篇001】:字符串的最全常用操作方法
|
SQL 关系型数据库 MySQL
python使用插入带有%的字符串到mysql数据库
python使用插入带有%的字符串到mysql数据库
252 0
python使用插入带有%的字符串到mysql数据库
|
Linux Shell C语言
Python-字符串相关操作
Python-字符串相关操作
|
Python
Python——字符串数据类型及常用操作
Python——字符串数据类型及常用操作
142 1
Python——字符串数据类型及常用操作