文章目录

  • 实验要求
  • 一、SQL创建学生表
    • 1.1 creat table
    • 1.2 show index
  • 二、ORM方式创建数据
    • 2.1 建立数据
    • 2.2 查询数据
  • 总结

实验要求

实验目的:是为了理解index在数据库的作用,理解index的应用场合

  1. Python的SQL语句测试
    请创建两个一样的学生表
    学生表1,包含主键id(自增,学生id),学生姓名nane,学生成绩score
    学生表2,包含主键id(自增,学生id),学生姓名nane,学生成绩score
    请给学生表2的score添加index索引

关系型数据中加索引与不加索引的区别:
某个字段创建索引会生成关于该字段的树形结构
即当使用where条件是:例如:where score > 90

  • 不加索引: 顺序查找------>O(n)
  • 加索引   : 折半查找------>O(log2n)
  1. 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数据库编程之索引相关推荐

  1. python数据库编程(1):潦草的开篇

    一.前言 关于数据库编程,涉及知识点广而杂,所以我并非一遍就能掌握,这里汲取了我的实践和认识,算是对python数据库编程的做一个铺垫吧.在以后的学习过程中会不断地完善数据库编程的知识点,鉴于此,另当 ...

  2. Python数据库编程pymysql

    Python数据库编程pymysql 一.数据库编程介绍 数据库编程就是针对数据库的操作,通过编写程序的方式,让程序做为数据库的客户端进行数据库操作. 对于MySQL的操作我们可以通过SQL语句,但是 ...

  3. python数据库编程 代码 源码_Python可以这样学_Python教程

    资源名称:Python可以这样学 内容简介: 全书共分16章,对Python内部工作原理进行了一定深度的剖析,99%以上的案例代码使用Python 3.5.1实现,也适用于Python 3.4.x(除 ...

  4. python数据库编程dbf_python读写dbf文件

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. 读取遍历dBASE或Xbase文件中的记录.从Python的序列创建DBF文件. impo ...

  5. 【Python】python数据库编程

    在任何的应用程序中,都需要持久存储.一般说来,有三种基本的存储机制:文件.关系型数据库或其它的一些变种,例如现有系统的API.ORM.文件管理器.电子表格.配置文件等等. 通过python访问数据库, ...

  6. python 数据库编程,这篇是针对 mysql 的,滚雪球学Python第4季第13篇

    在第一季滚雪球学 python 中,我们已经接触了 python 操作 sqlite,本篇博客为你介绍 python 与 mysql 和 nosql 之间的故事. 在正式学习之前,先确保你电脑上已经安 ...

  7. python数据库编程:Python基于Pymssql模块实现连接SQL Server数据库的方法详解

    本文实例讲述了Python基于Pymssql模块实现连接SQL Server数据库的方法.分享给大家供大家参考,具体如下: 数据库版本:SQL Server 2012. 按照Python版本来选择下载 ...

  8. python数据库编程dbf_如何使用Python dbf库读取和创建新的foxpro2.6数据库表

    库版本:dbf 0.97.0,python版本3.5.5 我试图用dbf库创建一个新的foxpro2.6.DBF文件.我跑>>> import dbf >>> ta ...

  9. python数据库mysql_python数据库(mysql)操作

    一.软件环境 python环境默认安装了sqlite3,如果需要使用sqlite3我们直接可以在python代码模块的顶部使用import sqlite3来导入该模块.本篇文章我是记录了python操 ...

最新文章

  1. java accept charset_springmvc中post请求中文乱码问题
  2. EEG数据、伪影的查看与清洗
  3. Pycharm切换anaconda的环境
  4. WDS系列--Windows Deployment Services概述篇
  5. wait 和 sleep 的区别
  6. 怎样用c语言写超市管理程序,C语言超市收银管理系统实现程序.doc
  7. POST请求传入中文参数,接收端乱码
  8. Java中常见的URL问题及解决方案
  9. 刷题upupup【Java中Queue、Stack、Heap用法总结】
  10. Writing an ALSA Driver(二)
  11. pow,sqrt使用时需注意
  12. jQuery中的gt和lt
  13. SQL 语言特点、功能和数据类型
  14. python玩扫雷_python实现扫雷小游戏
  15. bomb和mysql,Bmob
  16. VMware虚拟机装windows xp系统
  17. 编写一程序从键盘输入圆锥体的半径r 高度h 并计算其体积
  18. HTML小游戏11 —— 横版恐龙大冒险游戏(附完整源码)
  19. HorNet+YOLOv5改进方案
  20. 计算机培训普通话是什么,普通话培训(计算机辅助普通话测试介绍).ppt

热门文章

  1. 在这个大浪淘沙的时代,要有应对危机的能力
  2. 字节跳动2019春招研发部分编程题汇总【题解】
  3. 每天行驶3年后的想法
  4. 牛血清白蛋白包裹金纳米簇
  5. linkstack.h
  6. Kotlin在forEach中如何跳出循环和跳出当前循环体
  7. linux运维工程师应具备哪些技能
  8. iOS 14将隐私分享权还给用户,我的数据我做主?
  9. 基础数学问题1(洛谷)
  10. Excel导入导出加密码保护/加解密(Aspose.Cells方式)