Python3 Cx_oracle 的一些使用技巧
Cx_oracle的一些使用技巧
工作中的数据库采用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 通用查询的这个小工具还在开发中,等完成了再整理一下。
(编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |