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

从表格中选择数据

要从MySQL中的表格中选择数据,请使用"SELECT"语句:

示例选择"customers"表格中的所有记录,并显示结果:

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

注意:我们使用 fetchall() 方法,该方法从上次执行的语句中获取所有行。

选择列

要仅选择表格中的某些列,请使用"SELECT"语句,后跟列名:

示例仅选择name和address列:

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

使用 fetchone() 方法

如果您只对一行数据感兴趣,可以使用 fetchone() 方法。

fetchone() 方法将返回结果的第一行:

示例仅获取一行:

1import mysql.connector 2 3mydb = mysql.connector.connect( 4 host="localhost", 5 user="yourusername", 6 password="yourpassword", 7 database="mydatabase" 8) 9 10mycursor = mydb.cursor() 11 12mycursor.execute("SELECT * FROM customers") 13 14myresult = mycursor.fetchone() 15 16print(myresult)

这是您提供的内容的Markdown排版,按照您的要求进行了整理。如果需要进一步的编辑或修改,请告诉我。

使用筛选条件选择记录

在从表格中选择记录时,您可以使用"WHERE"语句来筛选选择的记录:

示例选择地址为"Park Lane 38"的记录:

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

通配符字符

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

使用 % 来表示通配符字符:

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

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

防止SQL注入

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

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

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

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

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

最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。

看完如果觉得有帮助,欢迎点赞、收藏关注

点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

sql注入

反引号是个比较特别的字符,下面记录下怎么利用0x00SQL注入反引号可利用在分隔符及注释作用,不过使用范围只于表名、数据库名、字段名、起别名这些场景,下面具体说下1)表名payload:select\from\users\whereuser\_id1limit0,1;!(https://o

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''

Prometheus监控学习笔记之PromQL简单示例

0x00简单的时间序列选择返回度量指标http_requests_total的所有时间序列样本数据:http_requests_total返回度量指标名称为http_requests_total,标签分别是job"apiserver",handler"/api/comments"

mysql设置时区

mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0