python实现一次性封装多条sql语句(begin end)


Posted in Python onJune 06, 2020

python封装利用begin end执行多条sql

因为业务需求,优化模型运行时间。考虑到sql语句每一次执行都要建立连接,查询,获取数据耗时过多。就想到将sql一起提交上去运行,能够节省很多时间。原本1.6-2.5秒耗时的sql语句经过修改后时间降到0.3-0.6秒,感觉性能提升挺好的。

当然还有一种想法,如果有python框架的orm可能会更快,相比来说耗时基本看不到了吧,这只是我的猜想,仅仅为了优化一个模型写一个框架的话 代码可能需要改的比较多,自我感觉付出和收获不一定会成正比,当然以后有时间可以试试。

这次优化基本代码逻辑没有动,利用了begin end进行sql整合。

公司用的是oracle,之前没用过但是感觉和mysql基本类似,如果是mysql的话该方法也可用

sql_str = ‘begin\n'
sql_str += ‘这里时需要执行的sql语句'
sql_str += ‘\ncommit;end;'

中间sql有多少条无所谓,看了一下运行时间感觉 我的一千行sql耗时 几乎就是这一千行里面耗时最长那个时间。是异步完成还是什么这个就不是很清楚了,主要是一次建立连接,省去网络传输数据和请求数据库的过程

网上好多begin end都是在可视化工具中的sql执行的,并不能在command中执行,这就意味中我们代码中封装的语句没有卵用,还好没放弃当时就研究了一下找到了解决办法

在end 提交一下就ok了,如果在command中运行一直未结束的话加一个 / 斜线就ok了

本次内容就此结束,下面是一些题外话。

在说一个其中遇到的问题吧,在进行sql封装后,其中很多表都很乱,约束很乱 而且逻辑并不严谨,但是模型正在运行还不让动 那只能按照这个规则来了

ORA 00001 违反唯一约束条件 其中出现了这个问题,意思就是唯一约束重复了,因为模型输入问题,处理出来的结果之前可能刚插入到数据库中(也就是 上面的sql_str 出现了两天相同的insert),这个东西很简单,加一个set判断一下就行,但是到这之后,一个bug就跳出来了,这个脚本计算的是因子重要度,结果预测可能每次都不相同,有些数据很小的可能就当成0扔进去了,所以我需要做的是将 相同数据的情况下插入较为重要的因子重要度(也无需要 ),这样的话简简单单的set就不行了,但是也不难 用来一下字典

importance_map = {}
 实现创建好字典
 if feature in importance_map:
        if importance_map[feature] < importance:
          sql_str +=‘***************‘'' 这里就是insert语句了
        else:
          continue
      else:
        importance_map[feature] = importance

其实这个东西也没有什么难点,但是做到这之后就有很多想法折射出来。

数据处理原本也可以用pandas进行,但是pandas是对所有数据进行操作,我一个set只对重复数据进行操作,切pandas内存消耗极为严重,前两天写的特征工程内存炸裂。表数据用完后内存并没有得到释放,这里面就涉及到python的垃圾回收,用法至今没有搞懂,还需要研究研究,gc是对循环引用进行垃圾回收,内存释放。但是这个pandas并不是循环引用,我认为是在存储在缓存区中,位置占死了,就很烦

模型毕竟是在服务器上面跑,尽量快切省内存,不然你把内存占了 别人的项目怎么玩。所以就用这种方法。

很少写博客,主要是记录一下问题以后 再出现了好应对。当然如果能够帮助正在修复bug中的你,也是乐意至极。那块说的有问题或者解释不清楚,可以留言。

补充知识:postgreSQL sql使用 %s时务必加引号,即为‘%s',否则报错

postgre sql使用 %s时务必加引号,即为‘%s',否则报错

if name == ‘main':

t="TDD-LTE_MRO"
sql="select * from lastftp where enbid = %d and keytype = %s"%(110001,t)

print(selectOperate(sql))

结果:

Traceback (most recent call last):
File “/home/eyann/mypython/t1/pgSQLoperate.py”, line 84, in
print(selectOperate(sql))
File “/home/eyann/mypython/t1/pgSQLoperate.py”, line 45, in selectOperate
cursor.execute(sql)
psycopg2.ProgrammingError: column “tdd” does not exist
LINE 1: …* from lastftp where enbid = 110001 and keytype = TDD-LTE_MR…
^

if name == ‘main':

t="TDD-LTE_MRO"
sql="select * from lastftp where enbid = %d and keytype = '%s'"%(110001,t)

print(selectOperate(sql))

结果:

[(‘test3', ‘TDD-LTE_MRO', ‘0114123000', ‘0012', 110001)]
[Finished in 0.1s]

以上这篇python实现一次性封装多条sql语句(begin end)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之从if开始语句的征程
Sep 14 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
django定期执行任务(实例讲解)
Nov 03 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
Python中实例化class的执行顺序示例详解
Oct 14 Python
python实现矩阵和array数组之间的转换
Nov 29 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
django filter过滤器实现显示某个类型指定字段不同值方式
Jul 16 Python
Python制作数据预测集成工具(值得收藏)
Aug 21 Python
如何通过安装HomeBrew来安装Python3
Dec 23 Python
详解Pymongo常用查询方法总结
Jan 29 Python
Python爬虫之爬取最新更新的小说网站
May 06 Python
python 在sql语句中使用%s,%d,%f说明
Jun 06 #Python
解决python 执行sql语句时所传参数含有单引号的问题
Jun 06 #Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
Jun 06 #Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 #Python
在python中使用pyspark读写Hive数据操作
Jun 06 #Python
使用Python构造hive insert语句说明
Jun 06 #Python
Python通过kerberos安全认证操作kafka方式
Jun 06 #Python
You might like
PHP实现简单的新闻发布系统实例
2015/07/28 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
JavaScript ECMA-262-3 深入解析.第三章.this
2011/09/28 Javascript
一个简单的js树形菜单
2011/12/09 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
jQuery为动态生成的select元素添加事件的方法
2016/08/29 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
使用element-ui的el-menu导航选中后刷新页面保持当前选中状态
2019/07/19 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
python的三目运算符和not in运算符使用示例
2014/03/03 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
心理健康课教学反思
2014/02/13 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
行政专员岗位职责说明书
2014/07/30 职场文书
社区党员公开承诺书
2014/08/30 职场文书
消防隐患整改通知书
2015/04/22 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
贷款工资证明范本
2015/06/12 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
详解非极大值抑制算法之Python实现
2021/06/28 Python
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android
TS 类型兼容教程示例详解
2022/09/23 Javascript