游标

Navicat工具、pymysql模块

℡╲_俬逩灬. 提交于 2020-01-22 06:33:47
一 IDE工具介绍(Navicat)   生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具,我们使用Navicat工具,这个工具本质上就是一个socket客户端,可视化的连接mysql服务端的一个工具,并且他是图形界面版的。我们使用它和直接使用命令行的区别就类似linux和windows系统操作起来的一个区别。   下载连接: https://pan.baidu.com/s/1bpo5mqj   Navicat的安装教程看这篇博客: https://www.cnblogs.com/pythoncainiao/p/10296069.html 掌握: #1. 测试+链接数据库 #2. 新建库 #3. 新建表,新增字段+类型+约束 #4. 设计表:外键 #5. 新建查询 #6. 备份库/表 #注意: 批量加注释:ctrl+?键 批量去注释:ctrl+shift+?键 二 pymysql模块   我们要学的pymysql就是用来在python程序中如何操作mysql,它和mysql自带的那个客户端还有navicat是一样的,本质上就是一个套接字客户端,只不过这个套接字客户端是在python程序中用的,既然是客户端套接字,应该怎么用,是不是要连接服务端,并且和服务端进行通信啊,让我们来学习一下pymysql这个模块 #安装 pip3 install pymysql

我终于学会了使用python操作postgresql

落爺英雄遲暮 提交于 2020-01-22 03:52:38
一 前言 这篇文章不仅适合pgsql,更适合mysql,思路都是一致的,如果读者学会使用psycopg2操作pgsql,那么使用PyMySQL 操作mysql也是很简单;本篇文章涵盖内容广泛,提供的操作选择性很多,比如多种数据插入操作,防止sql注入方式,异常处理,sql语句打印处理,显示行号等操作,一篇文章真的收益匪浅;觉得知识追寻者文章不错,随手点赞谢谢。如果看了作者文章有收获,不关注都是耍流氓。 二 数据库连接 2.1 安装 psycopg2 # pip install psycopg2 2.2 连接数据库 每条完整的sql执行步骤如下,读者应谨记; 建立连接获得 connect 对象 获得游标对象,一个游标对象可以对数据库进行执行操作,非线程安全,多个应用会在同一个连接种创建多个光标; 书写sql语句 调用execute()方法执行sql 抓取数据(可选操作) 提交事物 关闭连接 # -*- coding: utf-8 -*- import psycopg2 # 获得连接 conn = psycopg2.connect(database="python", user="postgres", password="123456", host="127.0.0.1", port="5432") # 获得游标对象 cursor = conn.cursor() # sql语句 sql

Android使用getWritableDatabase()和getReadableDatabase()

早过忘川 提交于 2020-01-22 03:03:41
数据库SQLite介绍 Android使用getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。      getReadableDatabase()方法中会调用getWritableDatabase()方法 其中 getWritableDatabase() 方法以读写方式打开数据库 ,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用的是getWritableDatabase() 方法就会出错。 getReadableDatabase() 方法则是先以读写方式打开数据库 ,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。如果该问题成功解决,则只读数据库对象就会关闭,然后返回一个可读写的数据库对象。 它会调用并返回一个可以读写数据库的对象 在第一次调用时会调用onCreate的方法 当数据库存在时会调用onOpen方法 结束时调用onClose方法 4. 区别 是不是上面两个总结一样? 然后事实呢? 两个方法都是返回读写数据库的对象,但是当磁盘已经满了时, getWritableDatabase 会抛异常,而 getReadableDatabase 不会报错,它此时不会返回读写数据库的对象,而是仅仅返回一个读数据库的对象。

ORA-01000 error

你。 提交于 2020-01-21 07:46:08
ORA-01000是最大开放游标错误,是Oracle数据库开发中极为常见的错误。 在Java的上下文中,当应用程序尝试打开更多ResultSet而不是数据库实例上的已配置游标时,会发生这种情况。 解决方式: 增加数据库中的最大开放游标数量或减少应用程序中的线程数量; 检查程序,注意关闭ResultSet 来源: https://www.cnblogs.com/kakaisgood/p/11164733.html

Java oracle 超出打开游标的最大数

泪湿孤枕 提交于 2020-01-21 07:45:26
Java代码在执行conn.createStatement 和conn.prepareStatement 时候 实际上都是相当和在数据库中打开了 个cursor 不要放在这两个方法不要放在循环中 java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误 ORA-01000: 超出打开游标的最大数 ORA-01000: 超出打开游标的最大数 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743) at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207) at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:790

关于 ORACLE游标的问题(ORA-01000: maximum open cursors exceeded)

喜夏-厌秋 提交于 2020-01-21 07:44:08
很多朋友在Java开发中,使用Oracle数据库的时候,经常会碰到有ORA-01000: maximum open cursors exceeded.的错误。 实际上,这个错误的原因,主要还是代码问题引起的。 ora-01000: maximum open cursors exceeded. 表示已经达到一个进程打开的最大游标数。 这样的错误很容易出现在Java代码中的主要原因是:Java代码在执行conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当与在数据库中打开了一个cursor。尤其是,如果你的createStatement和prepareStatement是在一个循环里面的话,就会非常容易出现这个问题。因为游标一直在不停的打开,而且没有关闭。 一般来说,我们在写Java代码的时候,createStatement和prepareStatement都应该要放在循环外面,而且使用了这些Statment后,及时关闭。最好是在执行了一次executeQuery、executeUpdate等之后,如果不需要使用结果集(ResultSet)的数据,就马上将Statment关闭。 对于出现ORA-01000错误这种情况,单纯的加大open_cursors并不是好办法,那只是治标不治本。实际上,代码中的隐患并没有解除。 而且

oracle超出打开游标的最大数的原因和解决方案

北城余情 提交于 2020-01-21 07:41:41
oracle超出打开游标的最大数的原因和解决方案 分类: Oracle相关 2012-06-05 10:36 6362人阅读 评论 (0) 收藏 举报 oracle 数据库 sql java session system 处理超出打开游标的最大数异常(ORA-01000: maximum open cursors exceeded) ORA-01000_maximum_open_cursors_exceeded_ 在执行如下代码时,经常会出现ora-01000: maximum open cursors exceeded异常 for(int i=0;i<balancelist.size();i++) { prepstmt = conn.prepareStatement(sql[i]); prepstmt.setBigDecimal(1,nb.getRealCost()); prepstmt.setString(2, adclient_id); prepstmt.setString(3, daystr); prepstmt.setInt(4, ComStatic.portalId); prepstmt.executeUpdate(); } 1. 检查数据库中的 OPEN_CURSORS 参数值。 Oracle 使用 init.ora 中的初始化参数 OPEN_CURSORS

mysql存储过程游标嵌套循环

落爺英雄遲暮 提交于 2020-01-21 00:13:10
自己写的一个mysql存储过程如下: BEGIN DECLARE _did bigint(20); DECLARE _count int; DECLARE s1 int; DECLARE cur_1 CURSOR FOR select id from info; /** 声明游标,并将查询结果存到游标中 **/ /** 获取查询数量 **/ SELECT count(id) into _count from info; SET s1=1; START TRANSACTION;#开启事务 open cur_1;#打开游标 while s1<_count+1 DO FETCH cur_1 INTO _did; -- 嵌套使用游标 BEGIN #声明变量 DECLARE token int DEFAULT 0; DECLARE _d int; DECLARE _t int; DECLARE _bdate datetime; #定义一个游标 DECLARE cur_2 CURSOR FOR select rr.da,rr.ts from rr left join info di on di.r_id = rr.id where di.id = _did; DECLARE CONTINUE HANDLER FOR NOT FOUND SET token=1; #开始循环游标 open cur

SQL高级应用

此生再无相见时 提交于 2020-01-20 22:31:37
1、游标的使用 Select\delete \update\insert into 表 selct*from 定义游标,让游标指向sql查询的结果 declare demoCursor Cursor for select 列名1,列名2,列名3 from 表名 open demoCursor declare @UserName nvarchar(32) declare @UserId int declare @UserAge int fetch next from demoCursor into @UserName, @UserName, @UserName close demoCursor deallocate domeCursor--释放游标 2、视图 把一个查询结果作为虚拟表 提供给开发人员使用 create View VW_UserInfo as select *from UserInfo where UserAge>40 视图的使用: select*from VW_UserInfo 视图可以直接当表用 3、临时表 用#修饰临时表 crete table #testTb ( Id int identity(1,1) primary key not null, Name nvarchar(32) null ) --临时表的使用和普通表一样。 select*from

oracle游标、触发器创建与使用

岁酱吖の 提交于 2020-01-20 08:00:16
游标 SQL语言是面向集合的,是对指定列的操作。如果要对列中的指定行进行操作,就必须使用游标。 当在PL/SQL块中执行查询语句(SELECT)和数据操纵语句(DML)时,Oracle会为其分配一个上下文区(Context Area) 游标是指向上下文区的指针,它为应用提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法 游标分为显式游标和隐含游标两种 隐含游标用于处理SELECT INTO和DML语句 显式游标则用于处理SELECT语句返回的多行数据 显式游标属性使用格式为:游标名 + 属性名 %ISOPEN 用于确定游标是否已经打开。如果游标已经打开,则返回值为TRUE;否则返回FALSE %FOUND 检查是否从结果集中提取到数据。如果提取到数据,则返回值为TRUE;否则返回FALSE %NOTFOUND 与%FOUND属性恰好相反,如果提取到数据,则返回值为FALSE;否则返回TRUE %ROWCOUNT 返回到当前行为止已经提取到的实际行数 //根据条件查询并输出部门信息 declare v_dept dept % rowtype ; cursor dept_cursor is select * from dept where deptno > 10 ; //定义游标 begin open dept_cursor ; //打开游标 loop fetch