pythonfetchone没有取到数据返回

pythonfetchone没有取到数据返回,第1张

pythonfetchone没有取到数据返回的原因是数据库连接出现异常,执行的查询语句没有返回数据,查询条件不符合实际情况。

1、数据库连接出现异常,可以检查网络连接是否正常,数据库服务是否正常运行等。

2、执行的查询语句没有返回数据,可以先查询一下数据库是否有数据返回。

3、数据库中的查询条件不符合实际情况,需要检查查询条件是否正确。

游标有三种:隐式游标 ,显示游标,ref游标 ,下面对于每一种给你写一个例子!

1:隐式游标

使用DML语句和单行查询语句时自动创建隐式游标

隐式游标自动声明、打开和关闭,其名为 SQL

通过检查隐式游标的属性可以获得最近执行的DML 语句的信息

隐式游标的属性 (P134)

%FOUND – SQL 语句影响了一行或多行时为 TRUE

%NOTFOUND – SQL 语句没有影响任何行时为TRUE

%ROWCOUNT – SQL 语句影响的行数

%ISOPEN - 游标是否打开,隐式游标始终为FALSE

BEGIN

UPDATE t_student SET sname = '张三丰'

WHERE sid= ‘09001';

IF SQL%FOUND THEN

DBMS_OUTPUTPUT_LINE('表已更新');

END IF;

END;

BEGIN

UPDATE emp SET deptno=20 WHERE empno=7839;

IF SQL%NOTFOUND THEN

DBMS_OUTPUTPUT_LINE('编号未找到。');

ELSE

DBMS_OUTPUTPUT_LINE(‘数据已更新');

END IF;

END;

DECLARE

v_no empempno%type;

v_name empename%type;

BEGIN

v_no:= '&职员编号';

SELECT ename INTO v_name

FROM emp WHERE empno=v_no;

IF SQL%ROWCOUNT>0 THEN

DBMS_OUTPUTPUT_LINE('职员的姓名是 '||v_name);

END IF;

EXCEPTION

WHEN NO_DATA_FOUND THEN

DBMS_OUTPUTPUT_LINE('职员未找到');

END;

2:显示游标

显式游标是由PL/SQL程序员定义和命名的游标

显式游标用于多行查询

显式游标需要在PL/SQL块的声明部分声明,在执行部分或异常处理部分打开,取完数据后将其关闭

declare

v_name t_studentsname%type;

Cursor cur_stu Is select sname from t_student;

begin

Open cur_stu;

Loop

Fetch cur_stu Into v_name;

Exit When cur_stu%NotFound;

dbms_outputput_line('学生姓名:'||v_name);

End Loop;

Close cur_stu;

end;

declare

CURSOR c_emp IS

SELECT empno,ename,sal FROM emp ORDER BY sal;

v_empno empempno%TYPE;

v_ename empename%TYPE;

v_sal empsal%TYPE;

begin

Open c_emp;

Loop

Fetch c_emp Into v_empno,v_ename,v_sal;

Exit When c_emp%NotFound;

dbms_outputput_line(v_empno||’ ’||v_ename||’ ’||v_sal);

End Loop;

Close c_emp;

end;

带参数的游标

declare

v_deptno empdeptno%type; --部门编号变量

cursor c_emp(dno number) is

select empno,ename,sal from emp where deptno=v_deptno;

r_emp c_emp%rowtype; --游标行

begin

v_deptno:='&部门编号'; --输入参数值

Open c_emp(v_deptno);--传递参数

Loop

Fetch c_emp Into r_emp;

Exit When c_emp%NotFound;

dbms_outputput_line(r_empempno||' '||r_empename||' '||r_empsal);

End Loop;

Close c_emp;

end;

3:Ref游标

DECLARE

TYPE refcur IS REF CURSOR;

ref_cur refcur; --REF游标变量

rec_emp emp%rowtype; --员工行变量

rec_dept dept%rowtype; --部门行变量

selection VARCHAR2(1) := UPPER(SUBSTR('&tab',1,1));

BEGIN

IF selection = 'E' THEN

OPEN ref_cur FOR SELECT FROM emp;

DBMS_OUTPUTPUT_LINE('===员工信息===');

LOOP

EXIT WHEN ref_cur%NOTFOUND;--判断是否存在

FETCH ref_cur INTO rec_emp; --游标控制员工行

DBMS_OUTPUTPUT_LINE('姓名:'||rec_empename ||' 职务:'||rec_empjob||

' 工资:'||rec_empsal);

END LOOP;

ELSIF selection = 'D' THEN

OPEN ref_cur FOR SELECT FROM dept;

DBMS_OUTPUTPUT_LINE('===部门信息===');

LOOP

FETCH ref_cur INTO rec_dept; --游标控制部门行

EXIT WHEN ref_cur%NOTFOUND;

DBMS_OUTPUTPUT_LINE('编号:'||rec_deptdeptno ||' 名称'||rec_deptdname||

' 地址:'||rec_deptloc);

END LOOP;

ELSE

DBMS_OUTPUTPUT_LINE('请输入员工信息(E) 或 部门信息(D)');

RETURN;

END IF;

CLOSE ref_cur;

END;

以每24小时作为一份时间(而非自然日),根据用户的配置有两种工作模式:带状模式中,用户仅定义开始日期时,从开始日期(含)开始,每份时间1个分片地无限增加下去;环状模式中,用户定义了开始日期和结束日期时,以结束日期(含)和开始日期(含)之间的时间份数作为分片总数(分片数量固定),以类似取模的方式路由到这些分片里。

1 DBLE 启动时,读取用户在 rulexml 配置的 sBeginDate 来确定起始时间

2 读取用户在 rulexml 配置的 sPartionDay 来确定每个 MySQL 分片承载多少天内的数据

3 读取用户在 rulexml 配置的 dateFormat 来确定分片索引的日期格式

4 在 DBLE 的运行过程中,用户访问使用这个算法的表时,WHERE 子句中的分片索引值(字符串),会被提取出来尝试转换成 Java 内部的时间类型

5 然后求分片索引值与起始时间的差,除以 MySQL 分片承载的天数,确定所属分片

1 DBLE 启动时,读取用户在 rulexml 配置的起始时间 sBeginDate、终止时间 sEndDate 和每个 MySQL 分片承载多少天数据 sPartionDay

2 根据用户设置,建立起以 sBeginDate 开始,每 sPartionDay 天一个分片,直到 sEndDate 为止的一个环,把分片串联串联起来

3 读取用户在 rulexml 配置的 defaultNode

4 在 DBLE 的运行过程中,用户访问使用这个算法的表时,WHERE 子句中的分片索引值(字符串),会被提取出来尝试转换成 Java 内部的日期类型

5 然后求分片索引值与起始日期的差:如果分片索引值不早于 sBeginDate(哪怕晚于 sEndDate),就以 MySQL 分片承载的天数为模数,对分片索引值求模得到所属分片;如果分片索引值早于 sBeginDate,就会被放到 defaultNode 分片上

与MyCat的类似分片算法对比

中间件

DBLE

MyCat

分片算法种类 date 分区算法 按日期(天)分片

两种中间件的取模范围分片算法使用上无差别

开发注意点

分片索引1 必须是字符串,而且 javatextSimpleDateFormat 能基于用户指定的 dateFormat 来转换成 javautilDate

分片索引2 提供带状模式和环状模式两种模式

分片索引3 带状模式以 sBeginDate(含)起,以 86400000 毫秒(24 小时整)为一份,每 sPartionDay 份为一个分片,理论上分片数量可以无限增长,但是出现 sBeginDate 之前的数据而且没有设定 defaultNode 的话,会路由失败(如果有 defaultNode,则路由至 defaultNode)

分片索引4 环状模式以 86400000 毫秒(24 小时整)为一份,每 sPartionDay 份为一个分片,以 sBeginDate(含)到 sEndDate(含)的时间长度除以单个分片长度得到恒定的分片数量,但是出现 sBeginDate 之前的数据而且没有设定 defaultNode 的话,会路由失败(如果有 defaultNode,则路由至 defaultNode)

分片索引5 无论哪种模式,分片索引字段的格式化字符串 dateFormat 由用户指定

分片索引6 无论哪种模式,划分不是以日历时间为准,无法对应自然月和自然年,且会受闰秒问题影响

运维注意点

扩容1 带状模式中,随着 sBeginDate 之后的数据出现,分片数量的增加无需再平衡

扩容2 带状模式没有自动增添分片的能力,需要运维手工提前增加分片;如果路由策略计算出的分片并不存在时,会导致失败

扩容3 环状模式中,如果新旧 [sBeginDate,sEndDate] 之间有重叠,需要进行部分数据迁移;如果新旧 [sBeginDate,sEndDate] 之间没有重叠,需要数据再平衡

配置注意点

配置项1 在 rulexml 中,可配置项为 <propertyname="sBeginDate"> 、 <propertyname="sPartionDay"> 、 <propertyname="dateFormat"> 、 <propertyname="sEndDate"> 和 <propertyname="defaultNode">

配置项2在 rulexml 中配置 <propertyname="dateFormat">,符合 javatextSimpleDateFormat 规范的字符串,用于告知 DBLE 如何解析sBeginDate和sEndDate

配置项3在 rulexml 中配置 <propertyname="sBeginDate">,必须是符合 dateFormat 的日期字符串

配置项4在 rulexml 中配置 <propertyname="sEndDate">,必须是符合 dateFormat 的日期字符串;配置了该项使用的是环状模式,若没有配置该项则使用的是带状模式

配置项5在 rulexml 中配置 <propertyname="sPartionDay">,非负整数,该分片策略以 86400000 毫秒(24 小时整)作为一份,而 sPartionDay 告诉 DBLE 把每多少份放在同一个分片

配置项6在 rulexml 中配置 <propertyname="defaultNode"> 标签,非必须配置项,不配置该项的话,用户的分片索引值没落在 mapFile 定义

RN自带了一个非常优雅的网络 *** 作库fetch,下面的这个例子从gankio的接口拿到了美女的url然后通过state 传给列表组件,列表里返回组件显示。网络数据获取方法写在componentDidMount中,这个方法是组件生命周期中需要调用的一个方法。

class AwesomeProject extends Component {// 初始化模拟数据

constructor(props) {

super(props);

const ds = new ListViewDataSource({rowHasChanged: (r1, r2) => {r1 !== r2}});

thisstate = {

dataSource: ds,

load:false,

text:''

};

}

//耗时 *** 作放在这里面

componentDidMount(){

thisgetNet();

}

getNet(){

fetch('>

以上就是关于pythonfetchone没有取到数据返回全部的内容,包括:pythonfetchone没有取到数据返回、Oracle数据库中,使用fetch语句提取游标数据,fetch语句怎么理解呀!哪位Oracle高手帮忙解释下.Thankyou、分布式任务elastic-job分片获取fetchdata时候怎么控制数据不重复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9391943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存