没有合适的资源?快使用搜索试试~ 我知道了~
首页python实现一次性封装多条sql语句(begin end)
python实现一次性封装多条sql语句(begin end)
20 下载量 106 浏览量
更新于2023-05-04
评论
收藏 78KB PDF 举报
python封装利用begin end执行多条sql 因为业务需求,优化模型运行时间。考虑到sql语句每一次执行都要建立连接,查询,获取数据耗时过多。就想到将sql一起提交上去运行,能够节省很多时间。原本1.6-2.5秒耗时的sql语句经过修改后时间降到0.3-0.6秒,感觉性能提升挺好的。 当然还有一种想法,如果有python框架的orm可能会更快,相比来说耗时基本看不到了吧,这只是我的猜想,仅仅为了优化一个模型写一个框架的话 代码可能需要改的比较多,自我感觉付出和收获不一定会成正比,当然以后有时间可以试试。 这次优化基本代码逻辑没有动,利用了begin end进行sql整合。 公司用的是o
资源详情
资源评论
资源推荐
python实现一次性封装多条实现一次性封装多条sql语句语句(begin end)
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’
sql_str += ‘这里时需要执行的sql语句’
sql_str += ‘commit;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))
结果:
weixin_38737176
- 粉丝: 2
- 资源: 928
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0