0 0

使用django的数据库连接调用oracle存储过程报异常的解决方法20

一个老的系统,DAO基本是存储过程实现,因此django的模型很难使用,就直接调过程了。但利用django1.2.5的数据库连接调用oracle存储过程会报Variable_TypeByValue(): unhandled data type VariableWrapper
代码如下:
from django.db import connection   
from mysite.aop import transaction

@transaction
def callproc(id,comment):
    import cx_Oracle 
    cursor = connection.cursor()
    result=cursor.var(cx_Oracle.STRING)
    cursor.callproc("act14_pck.vote_submit",(id,comment,result))
    return result.getvalue() 

@transaction()是自定义的装饰器,用来提交或者回滚数据的
代码如下:
def transaction(func):
    def _transaction(*args):
        from django.db import transaction 
        try:
            obj = func(*args)
            transaction.commit()
            return obj
        except Exception,e:
            transaction.rollback() 
            raise e      
    return _transaction

执行这个会报异常Variable_TypeByValue(): unhandled data type VariableWrapper
后来查看了django的代码,将django/db/backends/oracle/base.py 647行
return VariableWrapper(self.cursor.var(*args))
改为
sreturn self.cursor.var(*args)
问题得到解决,但我是初学者,不知道这样的修改靠谱吗?
2011年3月22日 17:58

1个答案 按时间排序 按投票排序

0 0

最好问问你们老大

2011年4月07日 22:34

相关推荐

    cx_Oracle-7.3.0.tar.gz

    - 使用 `cx_Oracle.connect()` 方法可以建立数据库连接,`cursor.execute()` 可以执行 SQL 命令。 5. **新版本特性**: - `cx_Oracle-7.3.0` 相较于 `5.1.2` 版本,可能增加了对新版本 Oracle 数据库的支持,如 ...

    package_html.rar_html连接数据库_数据 报表 html_数据库网页

    描述中提到的“远程连接数据库,调用数据库包,实现网页输出包装物报表”进一步确认了这个项目的核心功能是通过网页显示从远程数据库获取的包装物报表数据。 在IT领域,将HTML与数据库连接并展示数据报表是一项常见...

    HTML-page-link-Oracle-.zip_HTML ORACLE_page

    1. **表单提交**:HTML表单可以用来收集用户输入,然后通过HTTP POST请求发送到服务器端,服务器再调用Oracle数据库进行处理。表单可以包含文本框、选择框、复选框等元素,以适应不同的数据类型。 2. **Ajax异步...

    PyPI 官网下载 | django-db-mailer-2.3.17.tar.gz

    Django 支持多种数据库,包括 MySQL、PostgreSQL、SQLite 和 Oracle。在 django-db-mailer 应用中,邮件信息被存储为数据库模型,便于管理和检索。 **django-db-mailer 功能** 1. **存储邮件**: django-db-mailer ...

    图书租售系统,数据库课程设计

    数据库是存储和管理信息的系统,常见的关系型数据库如MySQL、Oracle、SQL Server等。在进行数据库设计时,需要遵循ER(实体-关系)模型,定义实体(如用户、书籍、租借记录等)、属性(如用户ID、书名、出版日期等)...

    递归查询菜单树,支持mysql,oracle

    递归查询是一种在数据库中处理层次数据的方法,它通过自身调用来遍历层级结构。在菜单树场景中,每个菜单项可能有子菜单项,形成一种树状结构。通过递归查询,我们可以获取到所有级别的菜单项,包括它们的父级和子级...

    数据库课程设计订单生成系统代码+数据库+实验报告

    开发者需要使用预编译语句、参数化查询来防止SQL注入,对敏感信息进行加密存储,并且确保接口调用的安全性。 6. **事务管理**:在处理订单时,可能涉及到多个数据库操作,例如创建订单、更新库存、扣除用户余额等。...

    网上书店+数据库

    常见的数据库类型有关系型数据库(如MySQL、Oracle、SQL Server)、非关系型数据库(如MongoDB、Cassandra)等。网上书店通常选择关系型数据库,因为它们擅长处理结构化数据,便于实现复杂的查询和事务处理。 二、...

    将数据从数据库导出到excel

    数据库是一种存储和管理数据的系统,如MySQL、Oracle、SQL Server或MongoDB等。为了从数据库中获取数据,我们通常使用SQL(结构化查询语言)编写查询语句。例如,如果我们有一个名为`employees`的表,我们可以使用`...

    数据库管理与应用-1期 作品6 网上购书系统-源程序.rar

    7. 系统集成:将前端界面、后端逻辑和数据库连接起来,形成一个完整的网上购书系统,这可能涉及到API设计、接口调用等。 "KC03120200011_源程序"这个文件很可能包含了实现上述功能的代码,包括用户注册登录模块、...

    数据库课程设计 学生成绩管理系统.zip

    - 数据库连接池,如Python的pymysql或Java的JDBC,用于高效地管理数据库连接。 5. **安全性**: - 用户认证和授权:确保只有授权的教师和学生可以访问系统,可能使用session或token机制。 - SQL注入防护:对用户...

    django 模型字段设置默认值代码

    解决这个问题的一种方法是自定义 `include_default` 的值,特别是在知道数据库类型(如 MySQL)并了解其限制(如对于 'longtext' 和 'longblob' 类型不支持默认值)的情况下。你可以根据具体情况修改 `django\db\...

    Web数据库编程与应用

    在现代互联网环境中,Web数据库编程与应用是至关重要的技术领域,它涵盖了如何通过Web界面与后端数据库进行交互,以实现数据的存储、检索、更新和删除等操作。本主题主要涉及以下几个关键知识点: 1. **Web开发基础...

    基于ssm微信小程序的电影院票务系统源码数据库.zip

    7. **数据库**:未明确指出具体的数据库类型,但考虑到SSM框架,很可能使用的是MySQL或Oracle这样的关系型数据库。数据库将存储包括电影信息、场次、座位状态、用户信息、订单等关键数据。 综上所述,这个项目结合...

    一个从数据库取图片而且动态的代码

    因此,将图片直接存储在数据库(如MySQL、SQL Server或Oracle)的BLOB(Binary Large Object)字段中成为一种解决方案。这样做可以更好地控制访问权限,简化备份和迁移流程。 2. 动态查询: 要从数据库中动态获取...

    Django_DB

    5. **关系数据库支持**: Django默认使用SQLite,但也支持MySQL、PostgreSQL、Oracle等其他数据库。只需在settings.py配置文件中更改DATABASES设置即可。 6. **表单(Form)**: Django的表单系统可以帮助我们处理...

    高校补考管理系统源码附数据库

    数据库管理可能使用MySQL、Oracle或SQL Server等关系型数据库,以保证数据的稳定性和安全性。 二、功能模块 1. 学生管理:系统应具备录入、查询、修改和删除学生信息的功能,包括学号、姓名、专业、年级等。 2. ...

    高考志愿选择辅助系统-适合毕设,大作业、实训项目包含完整源码以及数据库文件.rar

    3. 数据库:MySQL、Oracle或SQL Server等关系型数据库,存储各类高考数据和用户信息。 4. 算法:可能使用机器学习算法(如决策树、随机森林、支持向量机)进行数据分析和志愿推荐。 三、源码结构解析 1. UI层:包括...

    代码 人事管理系统 数据库

    在实际的人事管理系统中,开发者可能会使用诸如Java、Python、C#等编程语言,结合SQL数据库(如MySQL、PostgreSQL或Oracle)进行开发。系统架构可能涉及前端框架(如React、Vue.js或Angular)和后端框架(如Spring ...

    Django 对象关系映射(ORM)源码详解

    Django的ORM(对象关系映射)是其框架的核心组件之一,它允许开发者使用Python对象来操作数据库,而无需直接编写SQL语句。这极大地提高了开发效率和代码可读性。下面我们将深入探讨Django ORM的源码结构和基本工作...

Global site tag (gtag.js) - Google Analytics