Python MySQL - Where 子句
如果要获取、删除或更新 MySQL 中表的特定行,则需要使用 where 子句指定条件来过滤要执行操作的表行。
例如,如果您有一个带有 where 子句的 SELECT 语句,则只会检索满足指定条件的行。
语法
以下是 WHERE 子句的语法 −
SELECT column1, column2, columnN FROM table_name WHERE [condition]
示例
假设我们在 MySQL 中创建了一个名为 EMPLOYEES 的表,如下所示 −
mysql> CREATE TABLE EMPLOYEE( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT ); Query OK, 0 rows affected (0.36 sec)
如果我们使用 INSERT 语句向其中插入 4 条记录,如下所示 −
mysql> INSERT INTO EMPLOYEE VALUES ('Krishna', 'Sharma', 19, 'M', 2000), ('Raj', 'Kandukuri', 20, 'M', 7000), ('Ramya', 'Ramapriya', 25, 'F', 5000), ('Mac', 'Mohan', 26, 'M', 2000);
以下 MySQL 语句检索收入大于 4000 的员工记录。
mysql> SELECT * FROM EMPLOYEE WHERE INCOME > 4000; +------------+-----------+------+------+--------+ | FIRST_NAME | LAST_NAME | AGE | SEX | INCOME | +------------+-----------+------+------+--------+ | Raj | Kandukuri | 20 | M | 7000 | | Ramya | Ramapriya | 25 | F | 5000 | +------------+-----------+------+------+--------+ 2 rows in set (0.00 sec)
使用 python 的 WHERE 子句
使用 python 程序 − 从表中获取特定记录
导入 mysql.connector 包。
使用 mysql.connector.connect() 方法创建连接对象,将用户名、密码、主机(可选默认值:localhost)和数据库(可选)作为参数传递给它。
通过在上面创建的连接对象上调用 cursor() 方法创建游标对象。
然后,执行带有 WHERE 子句的 SELECT 语句,将其作为参数传递给 execute()方法。
示例
以下示例创建一个名为 Employee 的表并填充它。然后使用 where 子句检索年龄值小于 23 的记录。
import mysql.connector #建立连接 conn = mysql.connector.connect( user='root', password='password', host='127.0.0.1', database='mydb') #使用 cursor() 方法创建游标对象 cursor = conn.cursor() #如果 EMPLOYEE 表已经存在则添加注释。 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") sql = '''CREATE TABLE EMPLOYEE( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )''' cursor.execute(sql) #填充表格 insert_stmt = "INSERT INTO EMPLOYEE (FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s)" data = [('Krishna', 'Sharma', 19, 'M', 2000), ('Raj', 'Kandukuri', 20, 'M', 7000), ('Ramya', 'Ramapriya', 25, 'F', 5000),('Mac', 'Mohan', 26, 'M', 2000)] cursor.executemany(insert_stmt, data) conn.commit() 使用 where 子句检索特定记录 cursor.execute("SELECT * from EMPLOYEE WHERE AGE <23") print(cursor.fetchall()) #关闭连接 conn.close()
输出
[('Krishna', 'Sharma', 19, 'M', 2000.0), ('Raj', 'Kandukuri', 20, 'M', 7000.0)]