在Python中用WHERE和通配符查询MySQL表

在MySQL中,如果想从表里筛选特定数据,需要用WHERE子句来进行过滤。下面介绍如何在Python里使用mysql-connector结合WHERELIKE通配符实现精准或模糊查询,并同时兼顾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)

上述代码只会打印addressPark 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进行条件查询了。