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 ...
随机推荐
- P/Invoke 技术
.NET 互操作 首先推荐一本书<精通.NET 互操作> ,这本书是目前中文资料里讲 互操作最详尽的书了. 做系统集成项目的同学应该都和设备打过交道(如视频设备:海康.大华等),在大多数情 ...
- Universial robot 运动学
1 正运动学: 1.1 DH方法理解 第i个坐标系固连在第i个连杆的左端.轴i固连于i-1杆,在i-1杆的右端. i坐标系固定在i杆上,随这i杆转动. 每个连杆有四个参数,第i个连杆: ai = ( ...
- 怎样ubuntu下命令行终端显示短路径
参考:http://blog.sina.com.cn/s/blog_b71132f001016cmm.html ubuntu的终端命令行默认是长路径,即把路径深度全部显示出来,操作起来不是很方便,下面 ...
- LeetCode 897. 递增顺序查找树(Increasing Order Search Tree)
897. 递增顺序查找树 897. Increasing Order Search Tree 题目描述 给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有 ...
- [转帖]oracle补丁类型
oracle补丁类型 https://www.cnblogs.com/liang545621/p/9417919.html 介绍挺好的 跟现在的也比较类似呢. 名称 说明 Release ¤ 标准 ...
- scau 9502 ARDF一个变量的问题
哨兵变量flag不小心没 设置成0..所以一直WA 9502 ARDF 时间限制:1000MS 内存限制:65535K 提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC Des ...
- C++实现2048小游戏
代码如下: #define _CRT_SECURE_NO_WARNINGS//去掉编译器内部扩增问题 #include<stdio.h> #include<stdlib.h> ...
- jquery中filter()和find()函数区别
通常把这两个函数,filter()函数和find()函数称为筛选器. 下面的例子分别使用filter函数和find函数对一组列表进行筛选操作. 一组列表: <li>1</li> ...
- python第三天---列表的魔法
# list 列表 # 中括号括起来,逗号分隔每个元素, # 列表中可以是数字字符串.列表等都可以放进去 list1 = [123, "book", "手动", ...
- 创建 Python Virtualenv 虚拟隔离环境
video:创建 Python Virtualenv 虚拟隔离环境 python 虚拟环境 venv 简单用法 - littlemore - 博客园 创建 Python Virtualenv 虚拟隔离 ...