从关系型数据库MySQL中读取数据

以下是python读取数据库的基本方法

关于怎样安装配置MySQL,网上教程一堆,不作详解

import mysql.connector #导入库

#MySQL的基本配置

config = {'host':'127.0.0.1',

                'user':'root',

                'password':'123456',

                'database':'python_data',

                'charset':'gb2312' #字符编码

}

# 建立mysql连接

cnn = mysql.connector.connect(**config)

cursor = cnn.cursor() # 获得游标

# sql语句,order为目标数据表

sql = "SELECT * FROM 'order' "

cursor.execute(sql) # 执行sql语句

data = cursor.fetchall() # 通过fetchall方法获得数据

for i in data[:2]:# 打印前两条数据

    print(i)

cursor.close() #关闭游标

cnn.close() # 关闭连接

上述中代码实现了python连接mysql所有数据,并打印前两条数据的功能。

下面我们来介绍mysql语句的其他的一些方法:

1、只查询前N条数据而非全部数据行记录

    SELECT * FROM 'order' LIMIT 100;

LIMIT为限制的数据记录方法,语法为limit m,n 意思是从第m到n-1条数据。

  SELECT * FROM 'order' LIMIT 11,10;

2、只查询特定列(而非全部列)的数据

示列:只查询total_amount和order_id两列数据

  SELECT total_amount,order_id FROM 'order';

3、查询特定列去重后的数据

示例:查询针对user_id去重后的数据

  SELECT DISTINCT user_id FROM 'order';

关键词DISTINCT用于返回唯一不同的值,后面接字段名,即要去重的字段。

4、查询带有一个条件的数据

示例:查询total_amount<100的所有数据

  SELECT * FROM 'order' WHERE total_amount < 100;

WHERE是条件关键字,后面接具体条件

5、查询带有多个条件(同时满足)的所有数据

示例:查询total_amount<100且status为REMOVED的所有数据

  SELECT * FROM  'order' WHERE total_amount <100 and  'status' = 'REMOVED';

6、查询带有多个条件(满足任意一个)的所有数据

示例:查询total_amount<100或status为REMOVED的所有数据

SELECT * FROM  'order' WHERE total_amount <100 or  'status' = 'REMOVED';

7、查询特定条件值在某个值域范围的数据

示例:查询status的值为REMOVED或NO_PENDING_ACTION或PENDING_ORDER_CONFIRM

  SELECT * FROM 'order' WHERE 'status' in('REMOVED','NO_PENDING_ACTION','PENDING_ORDER_CONFIRM');

8、使用正则表达式查询具有复杂条件的数据

示例:查询user_id以106开头且order_id包含04的所有订单数据

  SELECT * FROM 'order' WHERE user_id LIKE '106%' and order_id LIKE '%04%';

关键字LIKE连接不同的正则语法,后面接具体的匹配模式。

9、将查询到的数据倒序排列

示例:将total_amount金额在10-100之间的所有数据按照定单ID倒序排列

  SELECT * FROM 'order' WHERE 10 < total_amount < 100 ORDER BY order_id DESC;

在查询表达式ORDER BY的结尾,通过使用DESC来表示倒序排列,省略的话默认使用ASC正序排列。

10、查询指定列中包含空值的所有数据

示例:查询order_id不为空的所有数据

  SELECT * FROM 'order' WHERE order_id IS NOT NULL;

IS NULL表示为空,IS NOT NULL表示为非空。

当然还有其他的查询方法,欢迎补充,以上总结十条常用方法。

你可能感兴趣的:(从关系型数据库MySQL中读取数据)