pymysql
是一个用于连接 MySQL 数据库的 Python 库。它允许你在 Python 程序中执行 SQL 查询和操作数据库。模糊查询通常使用 LIKE
关键字来实现,可以在查询中使用通配符(如 %
和 _
)来匹配部分字符串。
pymysql
提供了简洁的 API,使得在 Python 中执行 SQL 查询变得非常容易。模糊查询主要有以下几种类型:
%
通配符在字符串前面,例如 LIKE 'abc%'
。%
通配符在字符串后面,例如 LIKE '%abc'
。%
通配符在字符串中间,例如 LIKE '%abc%'
。_
通配符,例如 LIKE 'a_b_c'
。模糊查询常用于以下场景:
以下是一个使用 pymysql
进行模糊查询的示例:
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='password', db='testdb')
cursor = conn.cursor()
# 模糊查询示例
search_keyword = 'abc'
sql = f"SELECT * FROM users WHERE name LIKE '%{search_keyword}%'"
cursor.execute(sql)
# 获取查询结果
results = cursor.fetchall()
for row in results:
print(row)
# 关闭连接
cursor.close()
conn.close()
原因:可能是由于通配符使用不当或查询条件设置不正确。
解决方法:仔细检查 SQL 查询语句,确保通配符和查询条件正确。
原因:模糊查询可能会导致全表扫描,特别是在大数据量情况下。
解决方法:
name
列上创建索引。LIMIT
子句。原因:直接将用户输入拼接到 SQL 查询中可能导致 SQL 注入攻击。
解决方法:使用参数化查询来防止 SQL 注入。以下是改进后的示例代码:
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='password', db='testdb')
cursor = conn.cursor()
# 模糊查询示例(参数化查询)
search_keyword = 'abc'
sql = "SELECT * FROM users WHERE name LIKE %s"
cursor.execute(sql, (f'%{search_keyword}%',))
# 获取查询结果
results = cursor.fetchall()
for row in results:
print(row)
# 关闭连接
cursor.close()
conn.close()
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云