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的增删改查、索引的更多相关文章

  1. pymysql 增删改 查 索引

    pymysql 模块的使用 pip install pymysql username = input ("请输入用户") pwd = input ("请输入密码" ...

  2. MongoDB学习笔记,基础+增删改查+索引+聚合...

    一 基础了解 对应关系 -> https://docs.mongodb.com/manual/reference/sql-comparison/ database -> database ...

  3. ES 17 - (底层原理) Elasticsearch增删改查索引数据的过程

    目录 1 增删改document的流程 1.1 协调节点 - Coordinating Node 1.2 增删改document的流程 2 查询document的流程 1 增删改document的流程 ...

  4. mysql python pymysql模块 增删改查 插入数据 介绍 commit() execute() executemany() 函数

    import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysql_pwd = ' encoding = ...

  5. mysql python pymysql模块 增删改查 查询 fetchone

    import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysql_pwd = ' encoding = ...

  6. mysql python pymysql模块 增删改查 查询 字典游标显示

    我们看到取得结果是一个元祖,但是不知道是哪个字段的,如果字段多的时候,就比较麻烦 ''' (1, 'mike', '123') (2, 'jack', '456') ''' 用字典显示查询的结果,也可 ...

  7. mysql python pymysql模块 增删改查 查询 fetchmany fetchall函数

    查询的fetchmany fetchall函数 import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' ...

  8. 5月11日 python学习总结 子查询、pymysql模块增删改查、防止sql注入问题

    一.子查询 子查询:把一个查询语句用括号括起来,当做另外一条查询语句的条件去用,称为子查询 select emp.name from emp inner join dep on emp.dep_id ...

  9. Solr增删改查索引

    一.添加索引,提交文档 1.如图,我的xml文档有predicate.object字段,这些在Solr配置文档里没有,所以xml文档提交不了 2.在F:\solr-4.10.0\example\sol ...

随机推荐

  1. Spyder中报错: Check failed: PyBfloat16_Type.tp_base != nullptr

    报错问题: 问题1:tensorflow/python/lib/core/bfloat16.cc:675] Check failed: PyBfloat16_Type.tp_base != nullp ...

  2. k8s开发实践

    代码自动生成:https://blog.openshift.com/kubernetes-deep-dive-code-generation-customresources/ 自定义controlle ...

  3. PAT甲级题分类汇编——排序

    本文为PAT甲级分类汇编系列文章. 排序题,就是以排序算法为主的题.纯排序,用 std::sort 就能解决的那种,20分都算不上,只能放在乙级,甲级的排序题要么是排序的规则复杂,要么是排完序还要做点 ...

  4. 从NV12中裁剪子画面注意事项

    1. 裁剪时,Y和UV的地址计算: / **** * pa_yuv_main: yuv首地址 * video_frame.loff: 行偏移量 lineoffset * VDO_SIZE_W.VDO_ ...

  5. vue 的 solt 子组件过滤

    如上图: 1.定义了一个类似下拉的组件 mySelect , 然后里面有自定义的组件 myOptions 2.有很多时候,我们希望, mySelect 组件内部的子组件,只能是 myOptions . ...

  6. BSGS和EXBSGS

    也许更好的阅读体验 \(Description\) 给定\(a,b,p\),求一个\(x\)使其满足\(a^x\equiv b\ \left(mod\ p\right)\) \(BSGS\) \(BS ...

  7. 跟我一起学docker

    一.认识 1.什么是docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加 ...

  8. java 线程并发(生产者、消费者模式)

    线程并发协作(生产者/消费者模式) 多线程环境下,我们经常需要多个线程的并发和协作.这个时候,就需要了解一个重要的多线程并发协作模型“生产者/消费者模式”. Ø 什么是生产者? 生产者指的是负责生产数 ...

  9. SQL Server2008数据库报错与解决方法

    一. 报错信息 启动MSSQLSERVER时有以下报错信息 打开SQL SERVER配置管理器,发现以下情况报错: 原因:由于先前安装了2005版VS,然后又安装了2015版VS 解决办法:卸载Loc ...

  10. java 爬虫:开源java爬虫 swing工具 Imgraber

    1实现点: 1.返回给定URL网页内,所有图像url list 2.返回给定URL网页内,自动生成图像文件路径.txt 文件 3.返回给定URL网页内,下载txt文件指定的图片url,并将所有图像保存 ...