游标

PyMySQL

江枫思渺然 提交于 2019-12-28 11:17:15
准备工作 使用python程序操作MySQL数据库 安装pymysql第三方包: sudo pip3 install pymysql 安装第三方包pip3 install 卸载第三方包pip3 uninstall pip3 list 查看使用pip命令安装的第三方包列表 ①导入pymysql包: import pymysql ②创建连接对象: 调用pymysql模块中的connect()函数来创建连接对象,代码如下: conn = connect(参数列表) *参数host: 连接mysql主机,如果是本机是’localhost’ *参数port: 连接的mysql主机的端口,默认是3306 *参数user: 连接的用户名 *参数password: 连接的密码 *参数database: 数据库的名称 *参数charset: 通信采用的编码方式,推荐使用utf8 连接对象操作说明: 关闭连接:conn.close() 提交数据:conn.commit() 撤销数据:conn.rollback() ③获取游标对象 获取游标对象的目标就是要执行sql语句,完成对数据库的增删改查操作 调用连接对象cursor()方法获取游标对象 cur = conn.cursor() 游标操作说明: 使用游标执行SQL语句: execute(operation [parameters ]) 执行SQL语句

02.python实现排序算法

若如初见. 提交于 2019-12-28 03:46:10
一、列表排序   将无序列表变为有序列表   应用场景: 榜单,表格, 给二分查找用,给其他算法用 二、python实现三种简单排序算法 时间复杂度O(n^2), 空间O(1) 1、冒泡排序 思路:   列表每两个相邻的数,如果前面的比后面的大,那么交换这两个数 代码实现: # 冒泡排序 @cal_time # 测试执行时间 def bubble_sort(li): for i in range(len(li)-1): # i表示第i趟 # 第i趟无序区位置【0,n-i-1】 for j in range(len(li)-i-1): if li[j] > li[j+1]: li[j], li[j+1] = li[j+1], li[j] # 最好情况 O(n^2) # 平均情况 O(n^2) # 最坏情况 O(n^2) # 优化改进>>> # 思路:如果冒泡排序中执行一趟而没有交换,则列表已经是有序状态,可以直接结束算法。 @cal_time def bubble_sort2(li): for i in range(len(li)): # 表示第i趟 exchange = 0 # 第i趟无序区的位置【0,n-i-1】 n是列表长度 for j in range(len(li)-i-1): if li[j] > li[j+1]: li[j], li[j+1] = li[j+1], li

SQL Server基础之游标

我怕爱的太早我们不能终老 提交于 2019-12-27 17:45:28
查询语句可能返回多条记录,如果数据量非常大,需要使用游标来逐条读取查询结果集中的记录。应用程序可以根据需要滚动或浏览其中的数据。本篇介绍游标的概念、分类、以及基本操作等内容。 一:认识游标   游标是 SQL Server 的一种数据访问机制,它允许用户访问单独的数据行。用户可以对每一行进行单独的处理,从而降低系统开销和潜在的阻隔情况,用户也可以使用这些数据生成的 SQL 代码并立即执行或输出。 1. 游标的概念  游标是一种处理数据的方法,主要用于存储过程,触发器和 T_SQL 脚本中,它们使结果集的内容可用于其它 T_SQL 语句。在查看或处理结果集中向前或向后浏览数据的功能。类似与 C 语言中的指针,它可以指向结果集中的任意位置,当要对结果集进行逐条单独处理时,必须声明一个指向该结果集中的游标变量。   SQL Server 中的数据操作结果都是面向集合的,并没有一种描述表中单一记录的表达形式,除非使用 WHERE 子句限定查询结果,使用游标可以提供这种功能,并且游标的使用和操作过程更加灵活、高效。 2. 游标的优点   SELECT 语句返回的是一个结果集,但有时候应用程序并不总是能对整个结果集进行有效地处理,游标便提供了这样一种机制,它能从包括多条记录的结果集中每次提取一条记录,游标总是与一跳 SQL 选择语句相关联,由结果集和指向特定记录的游标位置组成

基于Python对数据库的操作

谁说我不能喝 提交于 2019-12-27 12:35:05
1.批量增 使用mysql向数据库中批量插图数据: conn = pymysql.connect( host='127.0.0.1', port=3306, user='root', password='*******', database='wangyi') cur = conn.cursor(pymysql.cursors.DictCursor) 这里的cur指的是游标。游标是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一行数据了, 将游标放置到某行后,即可对该行数据进行操作。然而这些都是mysql内部的事情了,我们只需要知道要写上这么两句话, 在执行sql语句前实例化一个游标对象,并在执行完sql语句提交后,关掉这个游标就好了。 try: sql = "insert into news(title, content, keyword,type) values(%s, %s, %s,%s);" # 数据库中有id字段,使用executemany 向数据库中提交! print(sql) ret = self.cur.executemany(sql,[(item['new_title'],item['new_content'],word,type)])# 执行sql 语句    #有几个占位符 列表里面的元组就应该有几个元素,否则的就存不进去,   

MySQL4:存储过程和函数

你。 提交于 2019-12-27 05:11:40
什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理。本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用、查看、修改、删除存储过程和存储函数等。使用的数据库和表还是之前写JDBC用的数据库和表: create database school; use school; create table student ( studentId int primary key auto_increment not null, studentName varchar(10) not null, studentAge int, studentPhone varchar(15) ) insert into student values(null,'Betty', '20', '00000000'); insert into student values(null,'Jerry', '18', '11111111'); insert into student values(null,'Betty', '21', '22222222'); insert into student values(null,'Steve', '27', '33333333'); insert into student values(null,'James', '22

SQL中游标的使用

南笙酒味 提交于 2019-12-27 01:31:24
一般情况下,我们用SELECT这些查询语句时,都是针对的一行记录而言, 如果要在查询分析器中对多行记录(即记录集)进行读取操作时,则需要使用到游标或WHILE等循环。游标你是看不到的 游标都包含在对象里面 比如 存储过程 游标的类型: 1、静态游标(不检测数据行的变化) 2、动态游标(反映所有数据行的改变) 3、仅向前游标(不支持滚动) 4、键集游标(能反映修改,但不能准确反映插入、删除) 游标使用顺序: 1、定义游标 2、打开游标 3、使用游标 4、关闭游标 5、释放游标 Transact-SQL: declare 游标名 cursor [LOCAL | GLOBAL][FORWARD_ONLY | SCROLL][STATIC | KEYSET | DYNAMIC ] [READ_ONLY | SCROLL_LOCKS] for selet语句 [for update[of 列名[,列名]] 注:LOCAL 局部游标 GLOBAL 全局游标 FORWARD_ONLY 仅向前 SCROLL 滚动 STATIC 静态 KEYSET 键集 DYNAMIC 动态 READ_ONLY 只读 SCROLL_LOCKS 锁定游标当前行 获取游标的数据 FETCH [[NEXT | PRIOR | FIRST | LAST | ABSOLUTE{ n | @nvar | RELATIVE {

db2 常见错误以及解决方案

送分小仙女□ 提交于 2019-12-27 01:05:32
操作数据库流程中,遇到许多疑问,很多都与SQL CODE和SQL State有关,现在把一个完整的SQLCODE和SQLState不正确信息和有关解释作以下说明,一来可以自己参考,对DB2不正确自行找出原由 (声明:这是搜集网上的资料得来的,细致出处不记得了) sqlcode sqlstate 说明 格式说明:ErrorCode:-302 SQLState:22001 ------------------------------------------- 000 00000 SQL语句成功完成 01xxx SQL语句成功完成,但是有警告 +012 01545 未限定的列名被解释为一个有相互联系的引用 +098 01568 动态SQL语句用分号结束 +100 02000 没有找到满足SQL语句的行 +110 01561 用DATA CAPTURE定义的表的更新操作不能发送到原来的子系统 +111 01590 为2型索引配置了SUBPAGES语句 +117 01525 要插入的值的个数不等于被插入表的列数 +162 01514 指定的表空间被置为检查挂起状态 +203 01552 运用非唯一的名字来处理命名的限定列 +204 01532 命名的对象未在DB2中定义 +206 01533 命名的列不在SQL语句中指定的任何表中存在 +218 01537 因为SQL语句引用一个远程对象

mysql游标更新数据

徘徊边缘 提交于 2019-12-27 00:39:04
CREATE PROCEDURE curdemo() BEGIN DECLARE done INT DEFAULT 0; declare pid varchar(40); DECLARE cur1 CURSOR FOR select a.id from oy_trade_order a join oy_trade_order_contract_relation b on a.id=b.order_id join oy_trade_contract c on b.contract_id=c.id join oy_trade_contract_materiel d on c.id=d.contract_id where a.deleted_flag=0 and b.deleted_flag=0 and c.deleted_flag=0 and d.deleted_flag=0 and c.contract_type=0 -- and a.falish=0 and a.state=3; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; open cur1; REPEAT fetch cur1 into pid; if NOT done THEN update oy_trade_order set falish=0

MS SQL Server查询优化方法

折月煮酒 提交于 2019-12-26 19:54:24
查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈效应。 3、没有创建计算列导致查询不优化。 4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。 9、返回了不必要的行和列 10、查询语句不好,没有优化 ●可以通过如下方法来优化查询 : 1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要. 2、纵向、横向分割表,减少表的尺寸(sp_spaceuse) 3、升级硬件 4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段 5、提高网速; 6、扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。运行 Microsoft SQL Server?

Oracle的游标

十年热恋 提交于 2019-12-26 07:11:52
Oracle的游标 游标----- 内存中的一块区域,存放的是select 的结果 游标用来处理从数据库中检索的多行记录(使用 SELECT 语句)。利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集。 为了处理 SQL 语句, Oracle 将在内存中分配一个区域,这就是上下文区。这个区包含了已经处理完的行数、指向被分析语句的指针,整个区是查询语句返回的数据行集。游标就是指向上下文区句柄或指针。 两种游标: 一、显示游标 (需要明确定义!) 显示游标被用于处理返回多行数据的 SELECT 语句,游标名通过 CURSOR….IS 语句显示地赋给 SELECT 语句。 在 PL/SQL 中处理显示游标所必需的四个步骤: 1 )声明游标; CURSOR cursor_name IS select_statement 2 )为查询打开游标; OPEN cursor_name 3 )取得结果放入 PL/SQL 变量中; FETCH cursor_name INTO list_of_variables; FETCH cursor_name INTO PL/SQL_record; 4 )关闭游标。 CLOSE cursor_name 注意:在声明游标时, select_statement 不能包含 INTO 子句。当使用显示游标时, INTO 子句是 FETCH 语句的一部分。 1、