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 将字符串转换成字典dict
Mar 24 Python
Python中使用PyHook监听鼠标和键盘事件实例
Jul 18 Python
Python生成8位随机字符串的方法分析
Dec 05 Python
python实现淘宝秒杀聚划算抢购自动提醒源码
Jun 23 Python
python删除某个字符
Mar 19 Python
python实现决策树分类(2)
Aug 30 Python
python+mysql实现学生信息查询系统
Feb 21 Python
下载官网python并安装的步骤详解
Oct 12 Python
PyQt5多线程防卡死和多窗口用法的实现
Sep 15 Python
python实现在列表中查找某个元素的下标示例
Nov 16 Python
python中super()函数的理解与基本使用
Aug 30 Python
Python实现灰色关联分析与结果可视化的详细代码
Mar 25 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无限分类(树形类)
2013/09/28 PHP
thinkphp模板的包含与渲染实例分析
2014/11/26 PHP
php实现可逆加密的方法
2015/08/11 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
2018/08/10 PHP
PHP asXML()函数讲解
2019/02/03 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
用js重建星际争霸
2006/12/22 Javascript
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
Javascript获取图片原始宽度和高度的方法详解
2016/09/20 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
python中对list去重的多种方法
2014/09/18 Python
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
2017/10/11 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
个人授权委托书范本格式
2014/10/12 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
首都博物馆观后感
2015/06/05 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
css3新特性的应用示例分析
2022/03/16 HTML / CSS