Python中SQL——LIKE中的%
2016-05-06 16:58
399 查看
需求:
做项目的过程中,使用了MySQL数据库,后台使用Python来做逻辑层。项目中需要实现一个功能,通过输入搜索框中的字符去MySQL中找到匹配的文章的标题。
SQL语句:SELECT * FROM T_ARTICLE WHERE title LIKE '%searchStr%'
报错:
但是在Python中%是一个格式化字符,所以如果需要使用%则需要写成%%。从网上查了一些帖子,大多数人的回答是:
cur.execute("SELECT* from T_ARTICLE WHERE title LIKE '%%%s%%'" % searchStr)
或者
cur.execute("SELECT* from T_ARTICLE WHERE
title LIKE %s" % ('%%%s%%' % searchStr))
这样print出SQL语句之后为:
SELECT * FROM T_ARTICLE WHERE title LIKE '%生活%'
并且会报错 TypeError: not enough arguments for format string
这个错误很明显是提示格式化的时候出现了问题。
解决:
最终将在Python中执行的sql语句改为:
sql = "SELECT * FROM T_ARTICLE WHERE title LIKE '%%%%%s%%%%'" % searchStr
执行成功,print出SQL语句之后为:
SELECT * FROM T_ARTICLE WHERE title LIKE '%%生活%%'
原因:
Python在执行sql语句的时候,同样也会有%格式化的问题,仍然需要使用%%来代替%。因此要保证在执行sql语句的时候格式化正确。而不只是在sql语句(字符串)的时候正确。
做项目的过程中,使用了MySQL数据库,后台使用Python来做逻辑层。项目中需要实现一个功能,通过输入搜索框中的字符去MySQL中找到匹配的文章的标题。
SQL语句:SELECT * FROM T_ARTICLE WHERE title LIKE '%searchStr%'
报错:
但是在Python中%是一个格式化字符,所以如果需要使用%则需要写成%%。从网上查了一些帖子,大多数人的回答是:
cur.execute("SELECT* from T_ARTICLE WHERE title LIKE '%%%s%%'" % searchStr)
或者
cur.execute("SELECT* from T_ARTICLE WHERE
title LIKE %s" % ('%%%s%%' % searchStr))
这样print出SQL语句之后为:
SELECT * FROM T_ARTICLE WHERE title LIKE '%生活%'
并且会报错 TypeError: not enough arguments for format string
这个错误很明显是提示格式化的时候出现了问题。
解决:
最终将在Python中执行的sql语句改为:
sql = "SELECT * FROM T_ARTICLE WHERE title LIKE '%%%%%s%%%%'" % searchStr
执行成功,print出SQL语句之后为:
SELECT * FROM T_ARTICLE WHERE title LIKE '%%生活%%'
原因:
Python在执行sql语句的时候,同样也会有%格式化的问题,仍然需要使用%%来代替%。因此要保证在执行sql语句的时候格式化正确。而不只是在sql语句(字符串)的时候正确。
相关文章推荐
- python正则表达式
- Python数据分析示例(1)Day2
- Python的编码注释# -*- coding:utf-8 -*- (即在py中写中文)
- Python抓取one网页上的内容
- python commands模块
- DayDayUP_Python自学记录[8]_文件I/O
- python产生随机数
- python3中文乱码问题
- python Qrcode二维码开发环境搭建
- 『Python标准库』学习笔记
- python 进阶
- python学习笔记(mysqldb下载安装及简单操作)
- python_pip管理
- Python学习2016.4.14
- python中sort和sorted函数小结
- Python全栈开发之3、数据类型set补充、深浅拷贝与函数
- python学习2016.4.13
- python基础IV(切片、迭代、生成列表)
- python 小技巧
- numpy数据写入文件