Python数据库编程之索引
文章目录
- 实验要求
- 一、SQL创建学生表
- 1.1 creat table
- 1.2 show index
- 二、ORM方式创建数据
- 2.1 建立数据
- 2.2 查询数据
- 总结
实验要求
实验目的:是为了理解index在数据库的作用,理解index的应用场合
- Python的SQL语句测试
请创建两个一样的学生表
学生表1,包含主键id(自增,学生id),学生姓名nane,学生成绩score
学生表2,包含主键id(自增,学生id),学生姓名nane,学生成绩score
请给学生表2的score添加index索引
关系型数据中加索引与不加索引的区别:
某个字段创建索引会生成关于该字段的树形结构
即当使用where条件是:例如:where score > 90
- 不加索引: 顺序查找------>O(n)
- 加索引 : 折半查找------>O(log2n)
- Python的 ORM方式执行测试
请用ORM方式,在两个学生表中插入同样的数据-10万条,姓名生成采用汉字的随机组合方式,成绩采用0-100平均分布随机生成方式
对两个表同时执行查询大于95分成绩的学生,测试对score创建索引会不会带来查找时间效率的优势
一、SQL创建学生表
1.1 creat table
代码展示:
#Python 数据库
import pymysqldb = pymysql.connect(user='test',host='localhost', password='123456',database='testdb',charset='utf8')
cursor = db.cursor() #创建游标 游标的每个动作会执行到数据库里面sql = """create table student1(id int auto_increment primary key,name varchar(20) not null,score int) """
cursor.execute(sql)
sql = """create table student2(id int auto_increment primary key,name varchar(20) not null,score int) """
cursor.execute(sql)
#添加索引
sql = "create index score_index on student2(score)"
#删除索引
#sql = "creat index score_index on student2()"
cursor.execute(sql)
cursor.close()
db.close()
结果展示:
1.2 show index
SHOW INDEX FROM student1 //未加索引
SHOW INDEX FROM student2 //加索引
二、ORM方式创建数据
2.1 建立数据
关键代码如下(示例):
#创建类
class Student1(Base):__tablename__ ='student1'#表名-->数据库中表student1id = Column(Integer, primary_key=True)name = Column(String)score = Column(Integer,default=60)#默认60class Student2(Base):__tablename__ ='student2'#表名-->数据库中表student2id = Column(Integer, primary_key=True)name = Column(String)
.....
.....
.....
for i in range(100):#随机生成 两个字的姓名 分数 name = ''.join(random.sample('张王天男别奥法妹大那几年安东尼的技能但是否能单反',2))score = random.randint(0,100)session.add(Student1(name=name, score=score))session.add(Student2(name=name, score=score)) #每调用一次,塞入数据库执行一次 session.commit()'''由于插入数据需要消耗时间 当插入大量数据可作如下改动if i%10 == 0session.commit()'''print(i)
2.2 查询数据
代码如下(示例):
#SqlAlchemy查询建立也需要时间
students = session.query(Student1).filter(Student1.score<50).all()
students = session.query(Student1).filter(Student2.score<50).all()
#SqlAlchemy真实测试的查询
#100条数据,不见索引查询的快
#1000条数据,建立索引查询的快
print(time.clock())
students = session.query(Student1).filter(Student1.score>90).all()
print(time.clock())
students = session.query(Student2).filter(Student2.score>90).all()
print(time.clock())
- 总结:索引查询适用于大量数据
总结
Python数据库编程之索引相关推荐
- python数据库编程(1):潦草的开篇
一.前言 关于数据库编程,涉及知识点广而杂,所以我并非一遍就能掌握,这里汲取了我的实践和认识,算是对python数据库编程的做一个铺垫吧.在以后的学习过程中会不断地完善数据库编程的知识点,鉴于此,另当 ...
- Python数据库编程pymysql
Python数据库编程pymysql 一.数据库编程介绍 数据库编程就是针对数据库的操作,通过编写程序的方式,让程序做为数据库的客户端进行数据库操作. 对于MySQL的操作我们可以通过SQL语句,但是 ...
- python数据库编程 代码 源码_Python可以这样学_Python教程
资源名称:Python可以这样学 内容简介: 全书共分16章,对Python内部工作原理进行了一定深度的剖析,99%以上的案例代码使用Python 3.5.1实现,也适用于Python 3.4.x(除 ...
- python数据库编程dbf_python读写dbf文件
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. 读取遍历dBASE或Xbase文件中的记录.从Python的序列创建DBF文件. impo ...
- 【Python】python数据库编程
在任何的应用程序中,都需要持久存储.一般说来,有三种基本的存储机制:文件.关系型数据库或其它的一些变种,例如现有系统的API.ORM.文件管理器.电子表格.配置文件等等. 通过python访问数据库, ...
- python 数据库编程,这篇是针对 mysql 的,滚雪球学Python第4季第13篇
在第一季滚雪球学 python 中,我们已经接触了 python 操作 sqlite,本篇博客为你介绍 python 与 mysql 和 nosql 之间的故事. 在正式学习之前,先确保你电脑上已经安 ...
- python数据库编程:Python基于Pymssql模块实现连接SQL Server数据库的方法详解
本文实例讲述了Python基于Pymssql模块实现连接SQL Server数据库的方法.分享给大家供大家参考,具体如下: 数据库版本:SQL Server 2012. 按照Python版本来选择下载 ...
- python数据库编程dbf_如何使用Python dbf库读取和创建新的foxpro2.6数据库表
库版本:dbf 0.97.0,python版本3.5.5 我试图用dbf库创建一个新的foxpro2.6.DBF文件.我跑>>> import dbf >>> ta ...
- python数据库mysql_python数据库(mysql)操作
一.软件环境 python环境默认安装了sqlite3,如果需要使用sqlite3我们直接可以在python代码模块的顶部使用import sqlite3来导入该模块.本篇文章我是记录了python操 ...
最新文章
- java accept charset_springmvc中post请求中文乱码问题
- EEG数据、伪影的查看与清洗
- Pycharm切换anaconda的环境
- WDS系列--Windows Deployment Services概述篇
- wait 和 sleep 的区别
- 怎样用c语言写超市管理程序,C语言超市收银管理系统实现程序.doc
- POST请求传入中文参数,接收端乱码
- Java中常见的URL问题及解决方案
- 刷题upupup【Java中Queue、Stack、Heap用法总结】
- Writing an ALSA Driver(二)
- pow,sqrt使用时需注意
- jQuery中的gt和lt
- SQL 语言特点、功能和数据类型
- python玩扫雷_python实现扫雷小游戏
- bomb和mysql,Bmob
- VMware虚拟机装windows xp系统
- 编写一程序从键盘输入圆锥体的半径r 高度h 并计算其体积
- HTML小游戏11 —— 横版恐龙大冒险游戏(附完整源码)
- HorNet+YOLOv5改进方案
- 计算机培训普通话是什么,普通话培训(计算机辅助普通话测试介绍).ppt