python使用插入带有%的字符串到mysql数据库
2023-09-27 14:24:15 时间
使用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
数据库查看,确实插入了
使用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注入攻击
tips
: peewee的数据库链接使用完后需要手动关闭下,加一个close
,不然会一直占用连接
相关文章
- CSV文件用python导入mysql
- python通过ssh连接mysql数据库的注意事项
- python中mysql更新字段中传参
- 【MySQL高级】MySql中常用工具及Mysql 日志
- windows python flask与mysql数据库写入查询
- Python使用pyMysql模块插入数据到mysql的乱码解决
- 基于Java+Python+MySQL实现的(Web)选题系统【100010569】
- 基于Python+MySQL实现(Web)简易论坛【100010283】
- 基于Python+Ant-Design-Vue+Mysql+实现(Web)游戏分发平台【100010124】
- python实例 字符串
- 转 Python 操作 MySQL 数据库
- python操作mysql数据库系列-操作MySql数据库(三)
- python操作mysql数据库系列-操作MySql数据库(一)
- python操作mysql数据库系列-安装MySql
- MySQL实战之三:Python连接与操作
- python操作mysql
- Python连接MySQL数据库,简单读写
- Python使用DB-API操作MySQL数据库
- Python实现基于最小二乘法的线性回归
- [Python] Python读取百万级数据自动写入Mysql数据库