• 关于

    执行语句怎么用

    的搜索结果

问题

PHP怎么能判断加了for update查询的mysql语句是否锁表了,如果锁表延时2秒呢?

mysql加了mysql for update查询时,怎么判断锁表。 详细:最近在做一个项目(PHP),有条查询语句for update过,我想实现,当执行到该查询语句时,如果该查询语句此时有另外一个用户在执行,用sleep延时2秒再执行。...
小旋风柴进 2019-12-01 20:09:03 1069 浏览量 回答数 1

问题

Sql存储过程 通过判断执行不同SQL语句

先判断当前时间,如果是0点到08点之间,就执行第一条sql语句,否则就执行第二条sql语句我就知道用case when去判断,但是 then 后面怎么写?难道要用一个变量装SQLy语句?然后分别给他赋值?比如举个例子:当前时间是早5点,就执...
吴孟桥 2019-12-01 19:53:03 1286 浏览量 回答数 1

问题

RDS怎么执行super权限下的sql语句

数据库用的是RDS,现在要执行session语句,自己建的账号权限不够,RDS有super权限吗?怎么才能切换成super账号,执行语句?...
who2 2019-12-01 21:44:20 4000 浏览量 回答数 0

回答

tuser_recharge.user_id 看上去必是 user.id 的子集,你在tuser_recharge(1.5m)上做DISTINCT,再怎么JOIN也没什么用,况且两个语句并不从user表关联取值,所以JOIN是多余的。但真正的问题还是在tuser_recharge的数据量,1.5m数据作DISTINCT,哪怕user_id有索引也不影响DISTINC的执行,mysql会遍历整个索引,1.5m记录,假设索引里单记录执行花费0.00001秒,光遍历索引就需要大概0.000001x1500000=1.5秒,你画出的第一条语句的执行结果就在这个数量级上。这你可以直接跑SELECT DISTINCT user_id FROM tuser_recharge来验证,速度会在一个数量级上。第二条语句要慢很多,是因为除了遍历整个1.5m的索引,还需要产生临时表做SORT(因为ORDER BY),慢是可想而知的。优化的思路,第一是看你是否有用WHERE的可能,即避免让DISTINCT遍历整个索引,而用WHER先缩小范围。SELECT DISTINCT user_idFROM tuser_rechargeWHERE col = xxx如果业务不允许,那么最好的办法不是优化DINSTINCT,而是优化你的架构。通常操作思路是把前端代码和慢SQL语句解耦,做一个MYSQL SLAVE,用一个后台程序定时执行慢语句,把结果存入某个地方,前端语句直接读取这个结果,不经过mysql。这样的好处是前端不会再有伸缩性问题,坏处是牺牲了一定的实时性。如果你控制后台语句每一分钟执行一次,对一般业务也不至于产生什么问题。通常用户前端有一分钟或者几分钟的延迟并不是什么大问题。这样做你在架构上的收益是最大的,因为一个慢语句的成本不只是这个慢语句本身,还会BLOCK其他语句的执行,这是在线系统数据库最应该避免的。
蛮大人123 2019-12-02 01:46:33 0 浏览量 回答数 0

问题

和云虚拟主机同步的MSSQL数据库怎么做定时执行SQL语句呢

和云虚拟主机同步的MSSQL数据库怎么做定时执行SQL语句呢, 用MSSQL管理工具连接上以后没有看到SQL代理的选项。...
雨意 2019-12-01 19:11:04 276 浏览量 回答数 1

问题

PHP如何判断INSERT是否插入成功?

在PHP中,用mysql_query执行一个INSERT语句后,在MYSQL控制台可查到查询成功,可是该怎么用代码判断这个语句是否执行成功?上网查的这个函数返回值就是TRUE或者FALSE,但是我这边执行不管对错都是返回0呢?求问该如何判断...
落地花开啦 2019-12-01 20:02:05 1100 浏览量 回答数 1

问题

mysql事务中两条sql语句外键约束的问题

现在的问题是这样的,我在php里面进行mysql操作,首先我start transaction保证操作的原子性。整个事务中包括两条插入语句,其中一条插入语句执行完后,用mysql_insert_id()获取对应的主键,该主键对应第二条插入语...
落地花开啦 2019-12-01 19:53:47 1566 浏览量 回答数 1

问题

PG版本中的 ON CONFLICT 不支持,有替换方案没有

在阿里云的PG9.4上执行 带有 ON CONFLICT 的sql语句就报错,有替换的sql语句和解决方案吗,用IF EXISTS 也报错,到底需要怎么处理这个sql语句,本人算一个小白,对此数据库不是很熟悉。希望大神能解答...
ming_999 2019-12-01 19:47:29 1275 浏览量 回答数 0

问题

怎么用sql语句在数据表中批量复制数据

比如原来已经有10w行,执行一个sql,数据变成20w 再执行一个,变成40w 不是拼sql insert的那种...
落地花开啦 2019-12-01 19:56:19 746 浏览量 回答数 1

问题

sql 语句怎么写判断

d.D_DirectionID dirid, 用了内外连接查询 D_DirectionID 是一个表名 dirid是一个字段 求判断如果dirid=43 就执行 条件1 如果等于44就执行条件2...
吴孟桥 2019-12-01 19:55:36 937 浏览量 回答数 1

问题

mycat链接oracle报错 未找到from关键字 <?报错

在用mycat链接oracle的时候报错 他应该是链接的时候执行了一个查询的sql语句 [node=dn1{select timediff( curtime(), utc_time() )}, 但是这个语句在oracle里面是错...
爱吃鱼的程序员 2020-06-23 01:26:08 0 浏览量 回答数 1

问题

SQLServerManagementStudio快,WEB慢怎么解决

一个简单的SELECT 语句  select id fom table  WEB上面执行要30多秒, 而用SQL Server Management Studio 瞬间就春来了,这怎么回事, WEB...
小小小飞鱼 2019-12-01 22:03:07 4213 浏览量 回答数 2

问题

使用OleDbCommand对sql server数据库进行操作的问题

有个编程作业是要模拟一个ATM机,我用vs2013来编写的,sql server版本是2012数据库ATM中已经有表account(card_id , account_owner , account_password , account_s...
吴孟桥 2019-12-01 20:00:41 925 浏览量 回答数 1

问题

mysql存储过程执行异常

在写一个存储过程的时候遇到了一个问题: countinue handler for not found处理的sql异常不但能捕获游标边界的异常,还能捕获到select id into XXX类似语句的异常? 结果我的存储过程中还用了不少se...
落地花开啦 2019-12-01 19:54:21 1464 浏览量 回答数 0

问题

关于mysql中查询重复数据的疑问

我有一个表叫做sc.现在要查询score中有相同分数的信息,查询的sql语句是 我很好奇的是group by的执行顺序是比 having先执行啊,按道理,执行了之后重复的score值是没有的,怎么还能再用having 来查出count(s...
吴孟桥 2019-12-01 20:03:33 928 浏览量 回答数 1

问题

如何改变ip地址80端口 ,还是只能访问80 吗

可能问题表述上不对,是这样的:现在有一个阿里云的服务器,环境搭好了apache+mysql+php,但我没有用php,又装了nodejs,写了点东西,listen3000端口 也可以用。但是每次访问都要先 执行一次 nodejs app.j...
a123456678 2019-12-01 20:11:20 2394 浏览量 回答数 1

问题

这个sql怎么用jpql来写

delete c from article_comment as c left join article a on c.article_id=a.id where a.user_id=?1上面的sql执行是可以的我写成下面提示错误,我查看了...
a123456678 2019-12-01 20:21:31 798 浏览量 回答数 1

回答

这得看数据量了,几十万以下,加个索引就可以搞定了。几十百万以上的话,无论是update还是delete都是不推荐的,一般用ctas建临时表,再将原本未更新的数据补进临时表,删除原表,把临时表改名为原表名。 ######看一下执行计划,是不是没走索引######哈,谢谢回答,是那个来源表里没索引,我已经加了,现在很快就能执行完,嘿嘿,不过你回答的晚了。我已经设置了最佳答案咯。###### @宏哥 知道这大龄屌丝数据库方面很就X,怎么就是在上面提问里面@不到呢,继续 @宏哥 一下。 ###### 你这语句能执行? c_row哪来的 pdate_date是哪来的 还有就是没有执行计划没办法分析的 ###### 引用来自“IdleMan”的答案 你这语句能执行? c_row哪来的 pdate_date是哪来的 还有就是没有执行计划没办法分析的 这2个你就可以当常量吧,因为这个是从存储过程里面直接copy过来的,但逻辑就是这样的没变。。 ######is not null? 建议看一下解释计划###### 引用来自“JackyYeong”的答案 is not null? 建议看一下解释计划 上面一个用这是,是因为我觉得这么些2个表应该是全连接,而实际是要更新的表 a 的每一行记录并不能在数据源表 b 中对应到数据,让我不想因为对应不到而把 a 中的更新成null,所以才这么写。第二个语句本身是不需要在这儿这么判断的,为了达到和第一个一样的目的,应该在where后面exists前面的更新条件,这样更慢,对吧? ###### 为什么你不拆开来分析一下到底是哪个条件导致这么慢? 建议你把中间select语句的执行计划拿出来看一下~还有表的结构跟表大小~
kun坤 2020-06-10 09:34:57 0 浏览量 回答数 0

问题

主从状态日志均显示正常但无数据同步

使用命令查看似乎没有报错信息,一切正常,更新语句发到了从机但是没有执行1)环境:xampp套件中带的mysql5.62)主机:show master status;file:ON.000002position:1187binlog_do_d...
落地花开啦 2019-12-01 20:01:59 1251 浏览量 回答数 1

问题

Servlet执行SQL语句把汉字插入到MySql,此时在MySql中汉字变成了方块,乱码

在安卓客户端有一个注册登录程序,注册的时候,输入用户名密码,客户端用GET方式把表单数据传到Servlet,然后Servlet通过 String name=request.getParameter("username");String pa...
a123456678 2019-12-01 20:12:28 1303 浏览量 回答数 1

回答

ReDBA专家门诊二期:MSSQL管理之道 请问一下大师,在做优化时通常需要反复执行对比优化前后的效果。但是我们在实际操作中,RDS里面似乎是因为cache的原因,再次执行某条语句的时候,执行速度就会变的很快。即使我们的query_cache_size参数设置为0,而且我查询过cache hit rate也为0,执行sql是也用了SQL_NO_CACHE关键字但是还是受到了cache的影响。这是什么原因的? 如果想要去除cache的影响来对比优化前后的SQL执行时间,我们应该怎么操作呢?谢谢
网萌 2019-12-02 01:34:33 0 浏览量 回答数 0

回答

大佬们,帮帮忙,谢谢了 checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'LIMIT5'atline8回复 @亚林瓜子:好的谢谢回复 @京墨:尝试输出到控制台,主要为了了解运行时sql语句回复 @亚林瓜子:请问怎么使用日志,没有用过。>.<回复 @京墨:运行时的sql可以用日志打印出来,或者debug看sql,这样可以确保运行时的sql和自己在数据库客户端的sql一致回复 @亚林瓜子:使用这种方法了,sql语句单独在数据库中执行是可以的,放到配置文件就不行了 去掉sql语句中的“;”号sql写在配置文件中,并没有使用;号 引用来自“sprouting”的评论 去掉sql语句中的“;”号回复 @sprouting:去掉;号,重新创建了一个项目,可以运行回复 @京墨:解决?哦哦,发现了,应该从数据库复制过来没有删,谢谢了
爱吃鱼的程序员 2020-06-07 22:32:41 0 浏览量 回答数 0

问题

请教RDS导出csv文件的问题

  以前用mysql的时候都是用select * from table_name into outfile '/home/temp/xx.csv' ; 使用RDS后执行改语句,导出的文件应该是导出到阿里的存储上了,我无法获取...
laihuchun 2019-12-01 21:42:05 4168 浏览量 回答数 3

问题

php7怎么设置mysql动态库

用yum执行# yum install php-mysql php-pdo之后,需要在php.ini中添加如下语句吗?extension=mysqli.soextension=pdo_mysql.so每安装一个东西,都要在php.ini进行...
蛮大人123 2019-12-01 19:52:37 888 浏览量 回答数 1

问题

MaxCompute常见问题:SQL常见问题

如何更新和删除数据?MaxCompute 执行SQL报错:提示If you really want to perform this join, try mapjoin原来没有指定分区,可以增加或更改分区吗...
行者武松 2019-12-01 22:09:50 1190 浏览量 回答数 0

问题

SSM项目中,sql执行不了,又不报错?? ?报错

我用Ajax请求后台数据,如果该数据在数据库中不存在则可以执行,但如果数据 存在我的Ajax就没返回值了,控制台中打印了sql语句,但是不报错,谁知道这是 怎么回事阿&#...
爱吃鱼的程序员 2020-06-23 16:06:39 0 浏览量 回答数 1

回答

1.字符串转义序列转义字符 描述(在行尾时) 续行符\ 反斜杠符号' 单引号" 双引号a 响铃b 退格(Backspace)e 转义000 空n 换行v 纵向制表符t 横向制表符r 回车f 换页oyy 八进制数yy代表的字符,例如:o12代表换行xyy 十进制数yy代表的字符,例如:x0a代表换行other 其它的字符以普通格式输出 2.字符串格式化 3.操作符 一、算术运算符 注意: 双斜杠 // 除法总是向下取整。 从符点数到整数的转换可能会舍入也可能截断,建议使用math.floor()和math.ceil()明确定义的转换。 Python定义pow(0, 0)和0 ** 0等于1。 二、比较运算符 运算符 描述< 小于<= 小于或等于 大于= 大于或等于== 等于 != 不等于is 判断两个标识符是不是引用自一个对象is not 判断两个标识符是不是引用自不同对象注意: 八个比较运算符优先级相同。 Python允许x < y <= z这样的链式比较,它相当于x < y and y <= z。 复数不能进行大小比较,只能比较是否相等。 三、逻辑运算符 运算符 描述 备注x or y if x is false, then y, elsex x andy if x is false, then x, elsey not x if x is false, then True,elseFalse 注意: or是个短路运算符,它只有在第一个运算数为False时才会计算第二个运算数的值。 and也是个短路运算符,它只有在第一个运算数为True时才会计算第二个运算数的值。 not的优先级比其他类型的运算符低,所以not a == b相当于not (a == b),而 a == not b是错误的。 四、位运算符 运算符 描述 备注x | y 按位或运算符 x ^ y 按位异或运算符 x & y 按位与运算符 x << n 左移动运算符 x >> n 右移动运算符 ~x 按位取反运算符 五、赋值运算符 复合赋值运算符与算术运算符是一一对应的: 六、成员运算符 Python提供了成员运算符,测试一个元素是否在一个序列(Sequence)中。 运算符 描述in 如果在指定的序列中找到值返回True,否则返回False。not in 如果在指定的序列中没有找到值返回True,否则返回False。 4.关键字总结 Python中的关键字包括如下: and del from not while as elif global or with assert else if pass yield break except import print class exec in raise continue finally is return def for lambda try你想看看有哪些关键字?OK,打开一个终端,就像这样~ long@zhouyl:~$ pythonPython 2.7.3 (default, Jan 2 2013, 16:53:07) [GCC 4.7.2] on linux2Type "help", "copyright", "credits" or "license" for more information. import keywordkeyword.kwlist ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield'] ============================== 华丽的 正文分隔符 ======================================== 看到这些关键字你还能记得多少?你不妨自己一个一个对照想想它的用法,下面是我总结的,我根据前面的学习笔记将上述关键字分为以下几类: 1.判断、循环 对于Python的循环及判断主要包括这些关键字: if elif else for while break continue and or is not in 这几个关键字在前面介绍 if 语法、while语法、for语法以及and...or语法中已有介绍,下面再一笔带过: 1.1 if 语法 if语法与C语言、shell脚本之下的非常类似,最大的区别就是冒号以及严格的缩进,当然这两点也是Python区别于其他语言的地方: if condition1: do something elif condition2: do another thing else: also do something 1.2 while 语法 Python的while语法区别于C、shell下的while除了冒号及缩进之外,还有一点就是while可以携带一个可选的else语句: while condition: do something else: do something 注:else语句是可选的,但是使用while语句时一定要注意判断语句可以跳出! 1.3 for 语法 与while类似,Python的for循环也包括一个可选的else语句(跳出for循环时执行,但是如果是从break语句跳出则不执行else语句块中的代码!),而且for 加上 关键字in就组成了最常见的列表解析用法(以后会写个专门的博客)。 下面是for的一般用法: for i in range(1,10,2): do something if condition: break else: do something for的列表解析用法: for items in list: print items 1.4 and...or 语法 Python的and/or操作与其他语言不同的是它的返回值是参与判断的两个值之一,所以我们可以通过这个特性来实现Python下的 a ? b : c ! 有C语言基础的知道 “ a ? b : c ! ” 语法是判断 a,如果正确则执行b,否则执行 c! 而Python下我们可以这么用:“ a and b or c ”(此方法中必须保证b必须是True值),python自左向右执行此句,先判断a and b :如果a是True值,a and b语句仍需要执行b,而此时b是True值!所以a and b的值是b,而此时a and b or c就变成了b or c,因b是True值,所以b or c的结果也是b;如果a是False值,a and b语句的结果就是a,此时 a and b or c就转化为a or c,因为此时a是 False值,所以不管c是True 还是Flase,a or c的结果就是c!!!捋通逻辑的话,a and b or c 是不是就是Python下的a ? b : c ! 用法? 1.5 is ,not is 和 is not 是Python下判断同一性的关键字,通常用来判断 是 True 、False或者None(Python下的NULL)! 比如 if alue is True : ... (不记得本节的童鞋罚复习:python 学习笔记 2 -- 判断语句) 2.函数、模块、类 对于Python的函数及模块主要包括这些关键字: from import as def pass lambda return class 那么你还能记得它们么?下面简单介绍一下: 2.1 模块 Python的编程通常大量使用标准库中的模块,使用方法就是使用import 、from以及as 关键字。 比如: import sys # 导入sys模块 from sys import argv # 从sys模块中导入argv ,这个在前面介绍脚本传参数时使用到 import cPickle as p # 将cPickle模块导入并在此将它简单命名为p,此后直接可以使用p替代cPickle模块原名,这个在介绍文件输入输出时的存储器中使用到 2.2 函数 Python中定义函数时使用到def关键字,如果你当前不想写入真实的函数操作,可以使用pass关键字指代不做任何操作: def JustAFunction: pass 当然,在需要给函数返回值时就用到了return关键字,这里简单提一下Python下的函数返回值可以是多个(接收返回值时用相应数量的变量接收!)! 此外Python下有个神奇的Lambda函数,它允许你定义单行的最小函数,这是从Lisp中借用来的,可以用在任何需要函数的地方。比如: g = lambda x : x*2 # 定义一个Lambda函数用来计算参数的2倍并返回! print g(2) # 使用时使用lambda函数返回的变量作为这个函数的函数名,括号中带入相应参数即可! (不记得本节的童鞋罚复习:python 学习笔记 4 -- 函数篇) 3.异常 对于Python的异常主要包括这些关键字: try except finally raise 异常这一节还是比较简单的,将可能出现的异常放在 try: 后面的语句块中,使用except关键字捕获一定的异常并在接下来的语句块中做相应操作,而finally中接的是无论出现什么异常总在执行最后做finally: 后面的语句块(比如关闭文件等必要的操作!) raise关键字是在一定的情况下引发异常,通常结合自定义的异常类型使用。 (不记得本节的童鞋罚复习:python 学习笔记 6 -- 异常处理) 4.其他 上面的三类过后,还剩下这些关键字: print del global with assert yield exec 首先print 在前面的笔记或者任何地方你都能见到,所以还是比较熟悉的,此处就不多介绍了!del 关键字在前面的笔记中已有所涉及,比如删除列表中的某项,我们使用 “ del mylist[0] ” 可能这些剩下来的关键字你比较陌生,所以下面来介绍一下: 4.1.global 关键字 当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的。这称为变量的 作用域 。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始。 eg. ? 1 2 3 4 5 6 7 8 9 10 11 !/usr/bin/python Filename: func_local.py def func(x): print'x is', x x = 2 print'Changed local x to', x x = 50 func(x) print'x is still', x 运行的结果是这样的:? 1 2 3 4 $ python func_local.py x is 50 # 运行func函数时,先打印x的值,此时带的值是作为参数带入的外部定义的50,所以能正常打印 x=50 Changed local x to 2 # 在func函数中将x赋2,并打印 x is still 50 # 运行完func函数,打印x的值,此时x的值仍然是之前赋给的50,而不是func函数中修改过的2,因为在函数中修改的只是函数内的局部变量 那么为什么我们要在这提到局部变量呢?bingo,聪明的你一下就猜到这个global就是用来定义全局变量的。也就是说如果你想要为一个在函数外定义的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是 全局 的。我们使用global语句完成这一功能。没有global语句,是不可能为定义在函数外的变量赋值的。eg.? 1 2 3 4 5 6 7 8 9 10 11 12 !/usr/bin/python Filename: func_global.py def func(): global x print'x is', x x = 2 print'Changed local x to', x x = 50 func() print'Value of x is', x 运行的结果是这样的:? 1 2 3 4 $ python func_global.py x is 50 Changed global x to 2 Value of x is 2 # global语句被用来声明x是全局的——因此,当我们在函数内把值赋给x的时候,这个变化也反映在我们在主块中使用x的值的时候。 你可以使用同一个global语句指定多个全局变量。例如global x, y, z。 4.2.with 关键字 有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。如果不用with语句,打开一个文件并读文件的代码如下:? 1 2 3 file = open("/tmp/foo.txt") data = file.read() file.close() 当然这样直接打开有两个问题:一是可能忘记关闭文件句柄;二是文件读取数据发生异常,没有进行任何处理。下面是添加上异常处理的版本:? 1 2 3 4 5 file = open("/tmp/foo.txt") try: data = file.read() finally: file.close() 虽然这段代码运行良好,但是太冗余了。这时候就是with一展身手的时候了。除了有更优雅的语法,with还可以很好的处理上下文环境产生的异常。下面是with版本的代码:? 1 2 with open("/tmp/foo.txt") as file: data = file.read() 这看起来充满魔法,但不仅仅是魔法,Python对with的处理还很聪明。基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。with语句的执行逻辑如下:紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。 下面例子可以具体说明with如何工作:? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 !/usr/bin/python with_example01.py classSample: def __enter__(self): print"In __enter__()" return"Foo" def __exit__(self, type, value, trace): print"In __exit__()" def get_sample(): returnSample() with get_sample() as sample: print"sample:", sample 运行代码,输出如下? 1 2 3 4 $python with_example01.py In __enter__() # __enter__()方法被执行 sample: Foo # __enter__()方法返回的值 - 这个例子中是"Foo",赋值给变量'sample',执行代码块,打印变量"sample"的值为"Foo" In __exit__() # __exit__()方法被调用 4.3.assert 关键字 assert语句是一种插入调试断点到程序的一种便捷的方式。assert语句用来声明某个条件是真的,当assert语句失败的时候,会引发一AssertionError,所以结合try...except我们就可以处理这样的异常。 mylist # 此时mylist是有三个元素的列表['a', 'b', 'c']assert len(mylist) is not None # 用assert判断列表不为空,正确无返回assert len(mylist) is None # 用assert判断列表为空 Traceback (most recent call last): File "", line 1, in AssertionError # 引发AssertionError异常 4.4.yield 关键字 我们先看一个示例:? 1 2 3 4 5 6 7 8 def fab(max): n, a, b = 0,0,1 whilen < max: yield b # print b a, b = b, a + b n = n + 1 ''' 使用这个函数:? 1 2 3 4 5 6 7 8 forn in fab(5): ... print n ... 1 1 2 3 5 简单地讲,yield 的作用就是把一个函数变成一个 generator(生成器),带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable(可迭代的)对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。也可以手动调用 fab(5) 的 next() 方法(因为 fab(5) 是一个 generator 对象,该对象具有 next() 方法),这样我们就可以更清楚地看到 fab 的执行流程:? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 f = fab(5) f.next() 1 f.next() 1 f.next() 2 f.next() 3 f.next() 5 f.next() Traceback (most recent call last): File"", line 1, in StopIteration 当函数执行结束时,generator 自动抛出 StopIteration 异常,表示迭代完成。在 for 循环里,无需处理 StopIteration 异常,循环会正常结束。 我们可以得出以下结论:一个带有 yield 的函数就是一个 generator,它和普通函数不同,生成一个 generator 看起来像函数调用,但不会执行任何函数代码,直到对其调用 next()(在 for 循环中会自动调用 next())才开始执行。虽然执行流程仍按函数的流程执行,但每执行到一个 yield 语句就会中断,并返回一个迭代值,下次执行时从 yield 的下一个语句继续执行。看起来就好像一个函数在正常执行的过程中被 yield 中断了数次,每次中断都会通过 yield 返回当前的迭代值。 yield 的好处是显而易见的,把一个函数改写为一个 generator 就获得了迭代能力,比起用类的实例保存状态来计算下一个 next() 的值,不仅代码简洁,而且执行流程异常清晰。 注:如果看完此段你还未明白yield,没问题,因为yield是初学者的一个难点,那么你下一步需要做的就是……看一看下面参考资料中给的关于yield的博文! 4.5.exec 关键字 官方文档对于exec的解释: "This statement supports dynamic execution of Python code."也就是说使用exec可以动态执行Python代码(也可以是文件)。? 1 2 3 4 5 6 7 8 9 10 11 12 13 longer = "print "Hello World ,my name is longer"" # 比如说我们定义了一个字符串 longer 'print "Hello World ,my name is longer"' exec(longer) # 使用exec 动态执行字符串中的代码 Hello World ,my name is longer exec(sayhi) # 使用exec直接打开文件名(指定sayhi,sayhi.py以及"sayhi.py"都会报一定的错,但是我觉得直接带sayhi报错非常典型) Traceback (most recent call last): File"", line 1, in TypeError: exec: arg 1must be a string, file, or code object # python IDE报错,提示exec的第一个参 数必须是一个字符串、文件或者一个代码对象 f = file("sayhi.py") # 使用file打开sayhi.py并创建f实例 exec(f) # 使用exec直接运行文件描述符f,运行正常!! Hi,thisis [''] script 上述给的例子比较简单,注意例子中exec语句的用法和eval_r(), execfile()是不一样的. exec是一个关键字(要不然我怎么会在这里介绍呢~~~), 而eval_r()和execfile()则是内建函数。更多关于exec的使用请详看引用资料或者Google之 在需要在字符中使用特殊字符时,python用反斜杠()转义字符。 原始字符串 有时我们并不想让转义字符生效,我们只想显示字符串原来的意思,这就要用r和R来定义原始字符串。如: print r’tr’ 实际输出为“tr”。 转义字符 描述 (在行尾时) 续行符 反斜杠符号 ’ 单引号 ” 双引号 a 响铃 b 退格(Backspace) e 转义 000 空 n 换行 v 纵向制表符 t 横向制表符 r 回车 f 换页 oyy 八进制数yy代表的字符,例如:o12代表换行 xyy 十进制数yy代表的字符,例如:x0a代表换行 other 其它的字符以普通格式输出
xuning715 2019-12-02 01:10:21 0 浏览量 回答数 0

回答

顶######换个思路,你为什么非要写在一行呢######因为我要在插入的时候返回刚插入主键的ID号,并且在程序里是String保存的语句######顶######顶###### 使用insert into...  values(...) returning ... into ...######回复 @hulubo : 不要存储过程,最好能把两条语句一块执行,要是不行的话就用调用Oracle Jdbc里面的获取主键的方法了,这样要改起来麻烦######回复 @web智能 : 这是pl/sql的语法,不知道你是用dbutil,或者写个存储过程。######这个怎么获取值?我用DBUtils封装的
kun坤 2020-06-20 13:35:31 0 浏览量 回答数 0

回答

顶######换个思路,你为什么非要写在一行呢######因为我要在插入的时候返回刚插入主键的ID号,并且在程序里是String保存的语句######顶######顶######使用insert into...  values(...) returning ... into ...######回复 @hulubo : 不要存储过程,最好能把两条语句一块执行,要是不行的话就用调用Oracle Jdbc里面的获取主键的方法了,这样要改起来麻烦######回复 @web智能 : 这是pl/sql的语法,不知道你是用dbutil,或者写个存储过程。######这个怎么获取值?我用DBUtils封装的
kun坤 2020-05-30 23:39:53 0 浏览量 回答数 0

回答

本地sql可以映射实体类吗?只能返回List<Object[]>吧? hql应该是没问题的回复 @polly:这个方法是我在http://www.cnblogs.com/yinglunstory/p/6090227.html中找到的,他里面就是强转为对应是实体类型,是我使用方式错了,还是这个方法本身是错的呢?第二个问题:我已经把debug的返回的内容贴出来了,我用object接收看到里面像一个数组,用object[]接收会报错。回复 @颖辉小居:你说的还是HQL,如果你执行NativeSql,只能返回List<Object[]>其中,Object[]对应各个字段的值。因为不知道各个字段的类型,因此这里只能是Object的数组,而不能是String[]query.uniqueResult()返回的只有一个object你好,可以debug看看这个对象是什么类型。是个Object 你这个是SQL语句,又不是HQL语句,怎么可能会自动封装啊,SQL语句查询返回的是结果集啊回复 @颖辉小居:hibernate5可以用泛型,少打了个5.。回复 @颖辉小居:hibernate中可以声明泛型了,以前的版本你可以用((SQLQuery)query).addEntity(Entity.class)试试,这个是将原生查询封装成实体的我是在http://www.cnblogs.com/yinglunstory/p/6090227.html找到的,是我用的方式不对还是,这个方法本身是错的啊那请问返回的这个object怎么用呢? debug,是一个object,里面像是一个数组,直接用Object[]接收会报错, 只能是object,debug object内容如下 : 那么这个怎么从objecto中取得数据呢? hibernate的sql查询并不能自动封装城对象,sql语句查询返回的是结果集,活着自己重写方法,利用java的反射自己封装城对象; 或者用hql半面向对象查询和Criteria(全面向对象)查询
爱吃鱼的程序员 2020-06-08 10:25:46 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板