加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Python3 Cx_oracle 的一些使用技巧

发布时间:2021-07-06 05:58:58 所属栏目:大数据 来源: https://blog.csdn.net/yilovex
导读:Cx_oracle的一些使用技巧 JAN 16 TH ,2012 工作中的数据库采用oracle。访问oracle数据库一般都采用cx_oracle包来完成,API很清晰,操作效率也比较高,而且oracle官方好像对cx_oracle也非常支持,提供了丰富的文档。这里讨论一些使用技巧,作为记录,可能对你

Cx_oracle的一些使用技巧

JAN 16TH,2012

工作中的数据库采用oracle。访问oracle数据库一般都采用cx_oracle包来完成,API很清晰,操作效率也比较高,而且oracle官方好像对cx_oracle也非常支持,提供了丰富的文档。这里讨论一些使用技巧,作为记录,可能对你也有用。

我最近用python写了一个小工具,这个工具根据客户端的请求查询数据库,并将结果集以json的方式返回。请求的格式如下:

   1: {
   2:     fields : [
   3:         {name : "project_id",type : "string"},
   4:         {name : "project_name",128)">"string"}
   5:     ],244); overflow:visible; width:850px; direction:ltr'>@H_301_42@   6:     
   7:     sql : "select t.project_id,t.project_name from dp_project t"
   8: }

即,客户端描述自己想要的元数据信息(字段名称,字段类型),以及sql语句,服务器端根据此信息查询数据库,并将返回组织成客户端在fields中描述的那样。

cx_oracle默认从cursor中fetch出来的数据是一个元组,按照sql中的顺序组织,但是我希望返回的是一个字典结构,这个可以通过设置cursor的rowfactory属性来实现,定义一个rowfactory的回调函数

1: def makedict(self,cursor):
   3:? 
   5:         return dict(zip(cols,args))
   7:     return createrow

这个函数返回一个函数:createrow。可能有点绕口,仔细想想就清晰了。cursor中带有足够的信息来生成这个字典,如cursor的description的值为:

1: [
;type 'cx_Oracle.STRING'>,40,0),
 
   
   2:     if dtype in (oracle.STRING,oracle.FIXED_CHAR):
   2: connection.outputtypehandler = self.outtypehandler

通用查询的这个小工具还在开发中,等完成了再整理一下。

?Jan 16th,2012??python

原始链接,?版权声明:自由转载-非商用-非衍生-保持署名|?Creative Commons BY-NC-ND 3.0

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读