mysql游标

Python3中获取mysql的结果集

不想你离开。 提交于 2019-12-18 06:24:55
目录 起步 查 获取结果 fetchone 情况一 情况二 情况三 fetchmany 情况一 情况二 情况三 fetchall 情况一 情况二 情况三 scroll移动 相对移动 绝对移动 示例代码 起步 #!/usr/bin/python3 # -*- coding: utf-8 -*- """pymysql查询 """ import pymysql conn = pymysql . connect ( user = 'root' , password = '' , host = 'localhost' , port = 3306 , charset = 'utf8mb4' , database = 'hardy2_db' , ) # 游标类型 cursor = conn . cursor ( cursor = None ) # cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) 查 sql = 'select id, age, name as nickname from pymysql_tb;' affected = cursor . execute ( query = sql ) # 拿到查询到的记录数 # print(affected) # int, 返回受影响的行数数目 获取结果 fetchone cursor

python之pymysql模块(mysql数据库操作)

半世苍凉 提交于 2019-12-18 04:30:25
import pymysql # 连接数据库 conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='12345678', db='test') # 游标默认返回元组 # cursor = conn.cursor() # 游标设置为字典,fetch返回字典格式 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 执行sql cursor.execute("insert into account (username,password) values ('a','a')") # 让改动更新到数据库 conn.commit() # 获取数据 cursor.execute("select * from account") data = cursor.fetchall() print('移动前',data) # 移动游标 cursor.scroll(0,'absolute') # 绝对位置 # cursor.scroll(1,'relative') 相对位置 data2 = cursor.fetchall() print('移动后',data2) # 获取自增id cursor.execute("insert into account

MySql存储过程参考

本小妞迷上赌 提交于 2019-12-11 18:35:53
Mysql(9)---纪录一次实际开发过程中用到的复杂存储过程 为了尽可能的还原当时为什么需要用到存储过程,下面我写了个详细的文档,我们可以从需求文档出发来分析。 有关存储过程之前也写了两篇文章来做铺垫。 LOOP 及 LEAVE、ITERATE 这里LOOP用来标记循环; 而LEAVE表示离开循环,好比编程里面的break一样; ITERATE则继续循环,好比编程里面的continue一样。 1、 Mysql(7)---存储过程 2、 Mysql(8)---游标 一、需求背景 一个服装类的app商城,用户会员等级分: 普通会员 , vip会员 , 钻石会员 。 现在在app上发布一款商品,但发布是可以设置该商品是 所有会员可见 ,还是 指定会员可见 。 现在要见3张表 1、商品表 2、会员表 3、商品关联会员表 这个时候,又有一个优惠券功能,同样可以设置该优惠券是 所有会员可见 ,还是 指定会员可见 。 需要再建两张表 1、优惠券表 2、优惠券关联会员表 然而,这时候又发布一个礼品,同样可以设置该礼品是 所有会员可见 ,还是 指定会员可见 。 又需要建两张表 1、礼品表 2、礼品关联会员表 ...... 思考 : 这里面我们发现可以优化的地方 1、每一次需要用到会员表信息的时候,都需要建一个关联表。 2、在编辑商品的时候,会员名称回显的时候,一般是两步。 1)

Python数据库 API

浪尽此生 提交于 2019-12-10 01:21:51
1、SQL(结构化查询语言),是基于关系代数运算的一种数据查询语言,用于存取数据,查询、更新和管理关系型数据库系统。    SQL(Structure Query Language) 语言的内部再分类如下:      DDL: Data Difinition Language 数据定义语言,一般用来库和表头的创建和删除;      DML: Data Manipulation Language 数据操作语言,一般用来做表中数据的增加和删除;      DQL: Data Query Language 数据查询语言,用来在数据库中查询的语言;     DCL:Data Control Language 数据控制语言,一般是DBA才会用到的数据库用户管理及日常维护语言。 2、SQL数据库和NoSQL数据库   SQL数据库, 如:MySQL、Oracle、SQL Server、Sybase和DB2等。   非关系型数据库(NoSQL ) ,如:Redis,Tokyo Cabinet,Cassandra,Voldemort,MongoDB,Dynomite,HBase,CouchDB,Hypertable, Riak,Tin, Flare, Lightcloud, KiokuDB,Scalaris, Kai, ThruDBd等 。 3、Python数据库API    DB-API

MYSQL 游标学习及使用实例

爱⌒轻易说出口 提交于 2019-12-07 11:59:26
who?(游标是什么?) 游标(cursor)官方定义:是系统为用户开通的一个数据缓冲区,存放sql执行结果。每个游标区都有一个名字,用户可以通过sql语句逐一从游标中获取记录,并赋值给变量,交由主语言进一步处理; 个人理解:感觉游标和指针相似,指定结果集后一行行执行; why?(为什么要学习游标) 游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作; 它还提供对基于游标位置而对表中数据进行删除或更新的能力; 而且,正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。 what?(游标的生命周期) --1.声明游标 --2.打开游标 --3.声明游标提取数据所要存放的变量 --4.定位游标到哪一行 使用实例 1、搭配while循环语句使用 # 代码使用目的:update t_shop表中的数据BEGIN -- 声明游标存储的变量 DECLARE v_shop_name varchar(255); DECLARE v_shop_area varchar(32); DECLARE done int DEFAULT 0; DECLARE chang_cursor CURSOR for select shop_name,shop_area from t_shop ; --

存储过程从定义开始

倖福魔咒の 提交于 2019-12-06 16:47:14
1. 使用存储过程的优点有: (1)存储过程在服务器端运行,执行速度快。 (2)存储过程执行一次后,其执行规划就驻留在高速缓冲存储器,在以后的操作中,只需从高速缓冲存储器中调用已编译好的二进制代码执行,提高了系统性能。 (3)确保数据库的安全。使用存储过程可以完成所有数据库操作,并可通过编程方式控制上述操作对数据库信息访问的权限。 2.创建存储过程可以使用create procedure语句。 要在MySQL 5.1中创建存储过程,必须具有CREATE routine权限。要想查看数据库中有哪些存储过程,可以使用SHOW PROCEDURE STATUS命令。要查看某个存储过程的具体信息,可使用SHOWCREATE PROCEDURE sp_name命令,其中sp_name是存储过程的名称。 CREATE PROCEDURE的语法格式: CREATE PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body 其中,proc_parameter的参数如下: [ IN | OUT | INOUT ] param_name type characteristic特征如下: language SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL

存储过程和函数

风流意气都作罢 提交于 2019-12-05 18:16:48
存储过程和函数的引入   存储过程和函数是在数据库中定义一些 SQL 语句的集合,然后直接调用这些存储过程和函数来执行已经定义好   的SQL语句。 存储过程和函数可以避免开发人员重复的编写相同的SQL语句。 而且, 存储过程和函数是在MySQL   服务器中存储和执行的,可以减少客户端和服务器端的数据传输;、 创建存储过程和函数 创建存储过程 CREATE PROCEDURE sp_name([proc_parameter[,...]]) [characteristic...] routine_body sp_name 参数是存储过程的名称; proc_parameter 表示存储过程的参数列表; characteristic 参数指定存储过程的特性; routine_body 参数是 SQL 代码的内容,可以用 BEGIN...END 来标志 SQL 代码的开始和结束。 proc_parameter 中的每个参数由 3 部分组成。这 3 部分分别是输入输出类型、参数名称和参数类型。 [ IN | OUT | INOUT ] param_name type 其中,IN 表示输入参数;OUT 表示输出参数;INOUT 表示既可以是输入,也可以是输出;param_name 参数是 存储过程的参数名称;type 参数指定存储过程的参数类型,该类型可以是 MySQL 数据库的任意数据类型

MySQL总结(5)

ぃ、小莉子 提交于 2019-12-04 03:38:23
视图 SELECT cust_name,cust_contact FROM customers,orders,orderitems WHERE customers.cust_id=orders.cust_id AND orderitems.order_num=orders.order_num AND prod_id='TNT2'; 假如可以把整个查询包装成一个名为 productcustomers 的虚拟表 SELECT cust_name,cust_contact FROM productcustomers #this is a 视图 WHERE prod_id='TNT2' productcustomers 是一个视图,作为视图,它不包含表中应该有的任何列或数据,它包含的是一个SQL查询(与上面用以正确联结表的相同的查询)。 😁 重用SQL语句。 😁 简化复杂的SQL操作。在编写查询后,可以方便地重用它而不必 知道它的基本查询细节。 😁 使用表的组成部分而不是整个表。 😁 保护数据。可以给用户授予表的特定部分的访问权限而不是整个 表的访问权限。 😁 更改数据格式和表示。视图可返回与底层表的表示和格式不同的 数据。 😘 与表一样,视图必须唯一命名(不能给视图取与别的视图或表相 同的名字)。 😘 对于可以创建的视图数目没有限制。 😘 为了创建视图,必须具有足够的访问权限

一次使用存储过程游标遇到的坑

耗尽温柔 提交于 2019-12-03 07:18:12
一次使用存储过程游标遇到的坑   有这样一个需求:统计某省某市某区前6个月的数据,直接sql查询效率很低,于是打算做定时任务,用定时器执行存储过程的方式在每月初统计上月的相关数据。   使用存储过程就要用到游标了,之前很少写存储过程,对游标也不是熟悉,咋办呢,现学现用啦。 创建存储过程 1 CREATE 2 [DEFINER = { user | CURRENT_USER }] 3  PROCEDURE sp_name ([proc_parameter[,...]]) 4 [characteristic ...] routine_body 5 6 proc_parameter: 7 [ IN | OUT | INOUT ] param_name type 8 9 characteristic: 10 COMMENT 'string' 11 | LANGUAGE SQL 12 | [NOT] DETERMINISTIC 13 | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } 14 | SQL SECURITY { DEFINER | INVOKER } 15 16 routine_body: 17   Valid SQL routine statement 18 19 [begin_label:]

MySQL必知应会-第24章-使用游标

匿名 (未验证) 提交于 2019-12-02 22:06:11
本章将讲授什么是游标以及如何使用游标。 需要MySQL 5 MySQL 5添加了对游标的支持,因此,本章内容适用于MySQL 5及以后的版本。由前几章可知, MySQL检索操作返回一组称为结果集的行。这组返回的行都是与SQL语句相匹配的行(零行或多行)。使用简单的SELECT语句,例如,没有办法得到第一行、下一行或前10行,也不存在每次一行地处理所有行的简单方法(相对于成批地处理它们)。有时,需要在检索出来的行中前进或后退一行或多行。这就是使用游标的原因。 游标(cursor) 是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。游标主要用于交互式应用,其中用户需要滚动屏幕上的数据,并对数据进行浏览或做出更改。只能用于存储过程 不像多数DBMS, MySQL游标只能用于存储过程(和函数)。 使用游标涉及几个明确的步骤。第 24 章23124.2 使用游标 175 在能够使用游标前,必须声明(定义)它。这个过程实际上没有检索数据,它只是定义要使用的SELECT语句。 一旦声明后,必须打开游标以供使用。这个过程用前面定义的SELECT语句把数据实际检索出来。 对于填有数据的游标,根据需要取出(检索)各行。 在结束游标使用时,必须关闭游标。在声明游标后