如何在Python中模拟cx_Oracle游标

2024-02-02

我在一个类中有两个以下函数,我需要模拟数据库连接和游标结果。 cx_Oracle.connect 已成功修补,它按预期工作。但是光标、callfunc、fetch_all 不会被模拟。知道正确的语法是什么吗?

class dbconnect:

    def db_connect(self, connection_details):
        connection = cx_Oracle.connect(user_name,pwd,<connection_string>)
        return connection

    def execute_function(self, sqlFunction, args):
        cursor = self.connection.cursor()
        res=cursor.callfunc(sqlFunction, cursor.var(cx_Oracle.CURSOR), args)
        results = {'headers' : [x[0] for x in res.description],
            'data': res.fetchall()
        }
        cursor.close()
        return results

我的模拟代码

with mock.patch('dbconnect.cx_Oracle.connect') as mockOracle:

   result_set = {}
   mockOracle.cursor.callfunc.fetch_all = result_set

实际上,您根本不必“模拟”连接和光标!您可以简单地自己对连接和光标进行子类化,如下所示:

class MyConnection(cx_Oracle.Connection):

    def cursor(self, scrollable=False):
        return MyCursor(self, scrollable)

class MyCursor(cx_Oracle.Cursor):

    def execute(self, sql, args):
        result = super(MyConnection, self).execute(sql, args)
        print("My mock execute...")
        return result

我不确定这是否是您的意图,或者您是否知道这种可能性。有了它,您可以添加新功能,并且可以覆盖或扩展现有功能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中模拟cx_Oracle游标 的相关文章

随机推荐

  • 将数据从 PostgreSQL 迁移到 MongoDB

    我必须从以下位置迁移 500 万条记录PostgreSQL to MongoDb 我尝试使用mongify相同 但随着它的运行ruby而且我根本不熟悉红宝石 我无法解决它造成的错误 所以 我尝试自己编写代码node js首先会转换Postg
  • 从 AOL 加载 Dojo 库并从本地加载 Widget 代码?

    我刚刚开始学习Dojo 我遵循一个站点 Widget 示例 使用一些不同的方法来加载 Dojo 库 我喜欢使用 AOL 参考来加载 dojo js 如下所示 并将我的小部件代码保存在本地网络服务器中 如下所示 scripts myWidge
  • W.I.F.:将 IsSessionMode 设置为 true,似乎无法实现

    我们在使用 Safari 和 Opera 时遇到了问题 据我所知 FedAuth cookie 太大了 有一个 巧妙的技巧 可以解决这个问题 WIF RTM 向 SessionAuthenticationModule 添加了一个属性 IsS
  • Google Closure Compiler进阶:编译时删除代码块

    如果我获取此代码并编译它 高级优化 constructor function MyObject this test 4 this toString function return test object window MyObject My
  • 使用带有迭代器的 mapPartition 保存 Spark RDD

    我有一些中间数据需要存储在 HDFS 和本地 我正在使用 Spark 1 6 在 HDFS 作为中间形式中 我正在获取数据 output testDummy part 00000 and output testDummy part 0000
  • ANTLR 解析器挂在 proxy.handshake 调用上

    我正在尝试让基本的 ECMAScript 解析器工作 并找到了完整的 ANTLR 语法ECMAScript 3 http research xebic com es3 它似乎编译正常并生成适当的 Lexer Parser Walker Ja
  • Google Apps 脚本日志(网络应用)不会显示在新界面中

    Apps 脚本最近将 StackDriver 日志移至Apps 脚本仪表板 https script google com 执行 页面 问题是 日志不会显示在 Apps 脚本 Web 应用程序的仪表板中 当我向 Apps 脚本 Web 应用
  • SQL Server 相当于 DBMS_METADATA.GET_DDL

    我想知道 SQL Server 2008 中是否有与 Oracle 的 DBMS METADATA GET DDL 函数等效的函数 您可以向此函数传递一个表名称 它将返回该表的 ddl 以便您可以使用它为架构构建脚本 我知道我可以进入 SS
  • 没有 Google 字体的 Bootstrap CSS

    我正在编写一个简单的离线网络应用程序来配置设备 类似于无线路由器设置页面 连接到我的设备的计算机没有互联网连接 它将从我的设备上运行的服务器加载页面 我使用 Bootstrap css 的 Bootswatch 覆盖构建了该页面 因为这是我
  • 有没有办法在用户安装 Ruby gem 后打印一条消息?

    有没有办法配置 gem 的 gemspec 在有人使用下载并安装 gem 后立即打印重要的信息消息gem install 是的 使用post install message在宝石规范中 docs http rubygems rubyforg
  • 在 pg-promise 中使用助手时如何设置列

    由node js开发 我在用pg 承诺 https github com vitaly t pg promise 插入以下数据时出现问题 我想在下表中插入多行数据 create table info id varchar 20 not nu
  • 将文件从 iPhone 沙箱复制到桌面?

    我正在为uni开发一个iPhone应用程序 我们在iPhone的沙箱目录中创建一个sqlite数据库文件 我们的应用程序在内部写入此文件 我想知道如何将此文件返回到我的桌面 我真的不介意如何做到这一点 任何方式都可以 也许甚至可以做一些事情
  • RSpec 1.3.3 Rails 2.3.9 Webrat 0.7.3“未定义方法‘分配’”

    My spec require spec helper describe user sessions new html erb do let user session mock model UserSession as null objec
  • 是否有用于解析 Windows 注册表文件的纯 Python 库?

    是否有一个纯Python 即完全跨平台 库用于解析Windows注册表文件 NTUSER DAT 只读访问是可以接受的 如果没有 存在哪些资源来记录注册表文件的逆向工程结构 Thanks Update由于在提出这个问题时似乎不存在纯 Pyt
  • Windows 8 下不会调用 NDIS 筛选器驱动程序的 FilterAttach 例程

    大家 我将著名的数据包捕获软件 WinPcap 从 NDIS 5 协议移植到 NDIS 6 LWF Win7下一切正常 然而 在Win8下 FilterAttach例程永远不会被调用 我发现DriverEntry中的NdisFRegiste
  • JQuery隐藏不删除对象的空间?

    我正在使用一些 jQuery 代码来隐藏列表项 ul items each function li gt 4 this hide 我的问题是 hide似乎隐藏了该元素 但它的空间仍然被分配 有没有办法删除这个空间 比如display non
  • 更改pdfptable的字体大小

    如何设置 pdfptable 的字体 创建短语时 必须在每个单元格中设置字体 Dim yourFont As BaseFont BaseFont CreateFont Current Server MapPath fonts somefon
  • 使用 swift 进行 google adwords 转化跟踪

    我正在尝试让 google adwords 参与我关注的一个快速项目https developers google com app conversion tracking ios https developers google com ap
  • 如何给导航栏上的backButtonItem设置action?

    如何给导航栏上的backButtonItem设置action 我有一个导航栏 当我按下后退按钮时 我需要向用户提醒一些消息 并且只有在用户做出反应后才返回到上一个视图 我该怎么做 谢谢 void viewDidLoad super view
  • 如何在Python中模拟cx_Oracle游标

    我在一个类中有两个以下函数 我需要模拟数据库连接和游标结果 cx Oracle connect 已成功修补 它按预期工作 但是光标 callfunc fetch all 不会被模拟 知道正确的语法是什么吗 class dbconnect d