翼度科技»论坛 编程开发 python 查看内容

Python MySQL 数据库查询:选择数据、使用筛选条件、防止 SQL 注入

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
从表格中选择数据

要从MySQL中的表格中选择数据,请使用"SELECT"语句:
示例选择"customers"表格中的所有记录,并显示结果:
  1. import mysql.connector
  2. mydb = mysql.connector.connect(
  3.   host="localhost",
  4.   user="yourusername",
  5.   password="yourpassword",
  6.   database="mydatabase"
  7. )
  8. mycursor = mydb.cursor()
  9. mycursor.execute("SELECT * FROM customers")
  10. myresult = mycursor.fetchall()
  11. for x in myresult:
  12.   print(x)
复制代码
注意:我们使用 fetchall() 方法,该方法从上次执行的语句中获取所有行。
选择列

要仅选择表格中的某些列,请使用"SELECT"语句,后跟列名:
示例仅选择name和address列:
  1. import mysql.connector
  2. mydb = mysql.connector.connect(
  3.   host="localhost",
  4.   user="yourusername",
  5.   password="yourpassword",
  6.   database="mydatabase"
  7. )
  8. mycursor = mydb.cursor()
  9. mycursor.execute("SELECT name, address FROM customers")
  10. myresult = mycursor.fetchall()
  11. for x in myresult:
  12.   print(x)
复制代码
使用 fetchone() 方法

如果您只对一行数据感兴趣,可以使用 fetchone() 方法。
fetchone() 方法将返回结果的第一行:
示例仅获取一行:
  1. import mysql.connector
  2. mydb = mysql.connector.connect(
  3.   host="localhost",
  4.   user="yourusername",
  5.   password="yourpassword",
  6.   database="mydatabase"
  7. )
  8. mycursor = mydb.cursor()
  9. mycursor.execute("SELECT * FROM customers")
  10. myresult = mycursor.fetchone()
  11. print(myresult)
复制代码
这是您提供的内容的Markdown排版,按照您的要求进行了整理。如果需要进一步的编辑或修改,请告诉我。
使用筛选条件选择记录

在从表格中选择记录时,您可以使用"WHERE"语句来筛选选择的记录:
示例选择地址为"Park Lane 38"的记录:
  1. import mysql.connector
  2. mydb = mysql.connector.connect(
  3.   host="localhost",
  4.   user="yourusername",
  5.   password="yourpassword",
  6.   database="mydatabase"
  7. )
  8. mycursor = mydb.cursor()
  9. sql = "SELECT * FROM customers WHERE address ='Park Lane 38'"
  10. mycursor.execute(sql)
  11. myresult = mycursor.fetchall()
  12. for x in myresult:
  13.   print(x)
复制代码
通配符字符
您还可以选择以给定字母或短语开头、包含或以给定字母或短语结尾的记录。
使用 % 来表示通配符字符:
示例选择地址中包含单词 "way" 的记录:
  1. import mysql.connector
  2. mydb = mysql.connector.connect(
  3.   host="localhost",
  4.   user="yourusername",
  5.   password="yourpassword",
  6.   database="mydatabase"
  7. )
  8. mycursor = mydb.cursor()
  9. sql = "SELECT * FROM customers WHERE address LIKE '%way%'"
  10. mycursor.execute(sql)
  11. myresult = mycursor.fetchall()
  12. for x in myresult:
  13.   print(x)
复制代码
防止SQL注入
当查询值由用户提供时,应该转义这些值。
这是为了防止SQL注入,这是一种常见的网络黑客技术,可以破坏或滥用您的数据库。
mysql.connector 模块具有转义查询值的方法:
示例使用占位符 %s 方法转义查询值:
  1. import mysql.connector
  2. mydb = mysql.connector.connect(
  3.   host="localhost",
  4.   user="yourusername",
  5.   password="yourpassword",
  6.   database="mydatabase"
  7. )
  8. mycursor = mydb.cursor()
  9. sql = "SELECT * FROM customers WHERE address = %s"
  10. adr = ("Yellow Garden 2", )
  11. mycursor.execute(sql, adr)
  12. myresult = mycursor.fetchall()
  13. for x in myresult:
  14.   print(x)
复制代码
最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。
看完如果觉得有帮助,欢迎点赞、收藏关注


来源:https://www.cnblogs.com/xiaowange/p/17825129.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具