pymysql的增删改查、索引
1.pymysql增删改
一定要有commit()
import pymysql
username = input("请输入用户名:")
pwd = input("请输入密码:")
conn = pymysql.connect(
host="localhost",
port=3306,
database="db2",
user="root",
password="",
charset="utf8"
)
sql = "insert into userinfo(name,pwd) values(%s,%s)"
cur = conn.cursor()
res = cur.execute(sql,[username,pwd])
print(res)
conn.commit() 一定要加,否则数据库中不会保存,只会在缓存中保存。如果之前没有加这句,提交了一次,虽然没有提交上,但是id的自增确保留下来了
cur.close()
conn.close()
2.pymysql查询
fetchone()
fetchmany(size)
fetchall()
import pymysql conn = pymysql.connect(
host="localhost",
port=3306,
database="db2",
user="root",
password="",
charset="utf8"
)
sql = "select * from userinfo"
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)#会以字典的形式返回查询信息 res = cur.execute(sql)
print(res) # ret = cur.fetchone()
# print(ret)
# ret = cur.fetchone()
# print(ret)
# ret = cur.fetchone()
# print(ret)
# ret = cur.fetchone()
# print(ret)
# ret = cur.fetchone()
# print(ret)
# ret = cur.fetchone()#单次查询如果超出范围会返回none
# print(ret) # ret = cur.fetchmany(6)#多条查询超过范围显示所有信息
# print(ret) ret = cur.fetchall()
print(ret)
conn.commit()
cur.close()
conn.close()
import pymysql conn = pymysql.connect(
host="localhost",
port=3306,
database="db2",
user="root",
password="",
charset="utf8"
)
sql = "select * from userinfo"
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)#会以字典的形式返回查询信息 res = cur.execute(sql)
print(res) ret = cur.fetchone()
print(ret)
#relative 相对于原来的位置,如果正数向下移动 反之亦然
#absolute 相对于起始位置,正数向下移动
cur.scroll(-1,mode="relative")
ret = cur.fetchone()
print(ret) conn.commit()
cur.close()
conn.close()
3.索引
作用:约束+加速查询
普通索引:create index ix_name on 表名(字段名);
作用:加速查询
唯一索引:create unique index un_name on 表名(字段名);
作用:约束+加速查询
主键索引:设置主键
覆盖索引:在索引文件中直接获取数据
例如:select name from big_data where name = "zhang50000"; 对name字段设置了索引
索引合并:把多个单列索引一起使用
select * from big_data where name = "zhang13131" and id = 13131;
联合索引:
联合普通索引
联合唯一索引
联合主键索引
最左前缀:
如果使用组合索引,name email 组合索引之后,查询
1.name和email 使用索引
2.name 使用索引
3.email 不使用索引
对于同时搜索n个条件时,组合索引的性能好于多个单列索引
组合索引的性能>索引合并的性能
对于索引:
1.创建索引:
注意事项:
1.避免使用select *
2.count(1)或count(列)代替count(*)
3.创建表时尽量使用char代替varchar
4.表的字段顺序固定长度的字段优先
5.组合索引代替多个单列索引(经常使用多个条件查询)
6.尽量使用短索引(create index ix_title on tb(title(16)));特殊的数据类型text
7.使用连接(join)代替子查询
8.连表时注意条件类型需要一致
9.索引散列(重复少)不适于用索引,例如性别
2.命中索引
3.正确使用索引
注意事项:
like "%xx"
select * from userinfo where name like "%al";
使用函数:
select * from userinfo where reverse(name) = "zhang333";
or
select * from userinfo where id = 1 or email = "zhang122@qq.com";
类型不一致:
select * from userinfo where name = 999;
!=:
select count(*) from userinfo where name != "zhang";
特别的:如果是主键,则还是会走索引
>:
select * from userinfo where name > "zhang";
特别的:如果是主键或索引是整数类型,则还是会走索引
select * from userinfo where id > 123;
select * from userinfo where num > 123;
order by:
select * from userinfo order by name desc;
当根据索引排序时,选择的映射如果不是索引,则不走索引
特别的:如果对主键排序则还是会走索引
select * from userinfo order by nid desc;
组合索引最左前缀:
然后组合索引为:(name,email);
name and email 使用索引
name 使用索引
email 不使用索引
对于创建索引,它是真实存在的,占用硬盘空间,尽量不要使用索引
select * from big_data where id > 2000010 limit 10;
select * from (select * from big_data where id > 2000020 limit 30) as A order by id desc limit 10;
pymysql的增删改查、索引的更多相关文章
- pymysql 增删改 查 索引
pymysql 模块的使用 pip install pymysql username = input ("请输入用户") pwd = input ("请输入密码" ...
- MongoDB学习笔记,基础+增删改查+索引+聚合...
一 基础了解 对应关系 -> https://docs.mongodb.com/manual/reference/sql-comparison/ database -> database ...
- ES 17 - (底层原理) Elasticsearch增删改查索引数据的过程
目录 1 增删改document的流程 1.1 协调节点 - Coordinating Node 1.2 增删改document的流程 2 查询document的流程 1 增删改document的流程 ...
- mysql python pymysql模块 增删改查 插入数据 介绍 commit() execute() executemany() 函数
import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysql_pwd = ' encoding = ...
- mysql python pymysql模块 增删改查 查询 fetchone
import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysql_pwd = ' encoding = ...
- mysql python pymysql模块 增删改查 查询 字典游标显示
我们看到取得结果是一个元祖,但是不知道是哪个字段的,如果字段多的时候,就比较麻烦 ''' (1, 'mike', '123') (2, 'jack', '456') ''' 用字典显示查询的结果,也可 ...
- mysql python pymysql模块 增删改查 查询 fetchmany fetchall函数
查询的fetchmany fetchall函数 import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' ...
- 5月11日 python学习总结 子查询、pymysql模块增删改查、防止sql注入问题
一.子查询 子查询:把一个查询语句用括号括起来,当做另外一条查询语句的条件去用,称为子查询 select emp.name from emp inner join dep on emp.dep_id ...
- Solr增删改查索引
一.添加索引,提交文档 1.如图,我的xml文档有predicate.object字段,这些在Solr配置文档里没有,所以xml文档提交不了 2.在F:\solr-4.10.0\example\sol ...
随机推荐
- python解析本地HTML文件
Python使用爬虫技术时,每运行一次,本地都会访问一次主机.为避免完成程序前调试时多次访问主机增加主机负荷,我们可以在编写程序前将网页源代码存在本地,调试时访问本地文件即可.现在我来分享一下爬取资料 ...
- Ubuntu开发环境配置
主要是: 源的更新 安装vim编辑器 远程登录xrdp相关配置 synergy symless键鼠共享配置 对新买的硬盘进行格式化和分区 vsftp环境搭建 gcc开发环境配置 qt5开发环境配置 m ...
- Ansible安装配置及命令使用详解
Ansible和saltstack目前市面上一些其它的项目管理工具有很大的不同,它的设计初衷就是为了更方便.快捷的进行配置管理.它易于安装和使用.语法也非常简单易学.你可以用Ansible将平常复杂的 ...
- docker 使用阿里云镜像加速
1.登录阿里云 2.进入控制台 3.搜索 “容器镜像服务” 下拉点击 “镜像加速器” 复制自己的私有地址 进入自己的docker宿主机器(替换下面的地址为自己的私有地址) 修改daemon配置文件/e ...
- linux编程 新建一个进程的方法
学习到一种,直接调用系统函数,在类的构造函数中直接启动一个线程,例如,某个类是用来监听串口的,可以直接在其构造函数中调用系统函数,开辟一个进程,在该进程对应的函数中不断while(1){....} h ...
- ubuntu 安装 iperf
iperf的github https://github.com/esnet/iperf/releases 解压 sudo tar -zvxf iperf-3.6.tar.gz -C /usr/loca ...
- sqlserve 数据库8G log文件也有10来g 按日期删除 方法
数据库存了几年的数据没有维护过,数据庞大,日志文件也不小,如何清理不需要的数据呢 首先考虑的肯定是某个日期之前的数据清除掉 delete from 表名 where cast(字段名 as datet ...
- Java 总结篇1
初始Java 1.Java的特点: ① 跨平台(字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成特定的机器码进行运行) ② 简单 ...
- List集合转换为数组类型方法
list集合转换为数组可以使用list集合的toArray(T[] a)方法, topicDetailsVo.setUrl(urls.toArray(new String[]{})); url是个数组 ...
- HTTP无状态协议理解
TTP协议是无状态协议. 无状态是指协议对于事务处理没有记忆能力.缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大.另一方面,在服务器不需要先前信息时它的应 ...