Python MySQL Where

使用筛选器来选取

从表中选择记录时,可以使用 "WHERE" 语句对选择进行筛选:

实例

选择记录为 "Park Lane 38" 的记录,结果:

  1. import mysql.connector
  2.  
  3. mydb = mysql.connector.connect(
  4. host="localhost",
  5. user="yourusername",
  6. passwd="yourpassword",
  7. database="mydatabase"
  8. )
  9.  
  10. mycursor = mydb.cursor()
  11.  
  12. sql = "SELECT * FROM customers WHERE address ='Park Lane 38'"
  13.  
  14. mycursor.execute(sql)
  15.  
  16. myresult = mycursor.fetchall()
  17.  
  18. for x in myresult:
  19. print(x)

通配符

您也可以选择以给定字母或短语开头、包含或结束的记录。

请使用 % 表示通配符:

实例

选择地址中包含单词 "way" 的记录:

  1. import mysql.connector
  2.  
  3. mydb = mysql.connector.connect(
  4. host="localhost",
  5. user="yourusername",
  6. passwd="yourpassword",
  7. database="mydatabase"
  8. )
  9.  
  10. mycursor = mydb.cursor()
  11.  
  12. sql = "SELECT * FROM customers WHERE address LIKE '%way%'"
  13.  
  14. mycursor.execute(sql)
  15.  
  16. myresult = mycursor.fetchall()
  17.  
  18. for x in myresult:
  19. print(x)

防止 SQL 注入

当用户提供查询值时,您应该转义这些值。

此举是为了防止 SQL 注入,这是一种常见的网络黑客技术,可以破坏或滥用您的数据库。

mysql.connector 模块拥有转义查询值的方法:

实例

使用占位符 %s 方法来转义查询值:

  1. import mysql.connector
  2.  
  3. mydb = mysql.connector.connect(
  4. host="localhost",
  5. user="yourusername",
  6. passwd="yourpassword",
  7. database="mydatabase"
  8. )
  9.  
  10. mycursor = mydb.cursor()
  11.  
  12. sql = "SELECT * FROM customers WHERE address = %s"
  13. adr = ("Yellow Garden 2", )
  14.  
  15. mycursor.execute(sql, adr)
  16.  
  17. myresult = mycursor.fetchall()
  18.  
  19. for x in myresult:
  20. print(x)