在MySQL中,如果想从表里筛选特定数据,需要用WHERE
子句来进行过滤。下面介绍如何在Python里使用mysql-connector
结合WHERE
与LIKE
通配符实现精准或模糊查询,并同时兼顾SQL注入的安全性。
1. 基础WHERE筛选
如果希望只查询符合某个条件的记录,可以在SELECT
语句后面添加WHERE
:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername", # 替换成你的MySQL用户名
password="yourpassword", # 替换成你的MySQL密码
database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM customers WHERE address = 'Park Lane 38'"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for row in myresult:
print(row)
上述代码只会打印address
为Park Lane 38
的行。
2. 使用通配符进行模糊匹配(LIKE语句)
当我们想匹配包含某个词或字符的记录时,可以使用LIKE
与%
通配符:
sql = "SELECT * FROM customers WHERE address LIKE '%way%'"
mycursor.execute(sql)
results = mycursor.fetchall()
for row in results:
print(row)
%way%
表示包含“way”这个字符串,无论前后还有没有其他字符。
3. 防止SQL注入:使用参数占位符
如果查询条件来自用户输入,则必须避免拼接字符串的方式写SQL,不然容易出现SQL注入风险。可以使用占位符%s
:
sql = "SELECT * FROM customers WHERE address = %s"
val = ("Yellow Garden 2", )
mycursor.execute(sql, val)
safe_result = mycursor.fetchall()
for row in safe_result:
print(row)
这样写就能自动转义特殊字符,避免SQL注入。
小结
- 使用
WHERE
语句可以精确查找指定值。 - 配合
LIKE
和%
通配符可实现模糊匹配。 - 防止SQL注入要使用
execute(sql, val)
的形式。
掌握这些用法后,你就可以在Python中安全且灵活地对MySQL进行条件查询了。