【问题标题】:Changing schema using cx_Oracle使用 cx_Oracle 更改架构
【发布时间】:2011-01-01 23:49:46
【问题描述】:

好吧,我希望这不是重复的,搜索没有产生任何有用的信息。

这几天我一直在玩cx_Oracle,安装和使用它。一切都很顺利,直到我遇到了当前的问题:我想更改我的架构。如果我使用 sqlplus 一个简单的 'alter session set current_schema=toto;'可以,但我不知道如何使用cx_Oracle 解决它。

我已经下载了最新的源码版本:cx_Oracle-5.0.2.tar.gz。

根据documentation 更改架构是设置Connection.current_schema 的简单情况,这应该是一个读写属性...问题是我的Connection 对象没有任何current_schema 属性。

>>> c = cx_Oracle.connect(...)
>>> dir(c)
['__class__', '__delattr__', '__doc__', '__enter__', '__exit__', '__format__', 
'__getattribute__', '__hash__', '__init__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', 
'__subclasshook__', 'autocommit', 'begin', 'cancel', 'changepassword', 'close', 
'commit', 'cursor', 'dsn', 'encoding', 'inputtypehandler',
'maxBytesPerCharacter', 'nencoding', 'outputtypehandler', 'password', 'prepare', 
'register', 'rollback', 'stmtcachesize', 'tnsentry', 'unregister', 'username', 
'version']

尝试使用设置属性

>>> c.current_schema = 'toto'

导致错误...__setattr__ 显然已被覆盖以防止它发生。

那么……有人知道怎么做吗?


这是我得到的错误。

>>> c.current_schema = 'toto'
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AttributeError: 'cx_Oracle.Connection' object has no attribute 'current_schema'

>>> setattr(c, 'current_schema', 'toto')
# same error

以下是关于 OS 和 python 的信息:

SUSE LINUX Enterprise Server 9 (x86_64)
VERSION = 9
PATCHLEVEL = 3

我使用 python 2.6.2(编译为 64 位)

我还在同一台机器上为 64 位编译了 cx_Oracle

【问题讨论】:

  • 不作为可见属性存在并不意味着什么。 __setattr__ 可以被覆盖以某种神秘的方式实现它。比dir(c) 更重要的是您实际执行c.current_schema='toto' 时实际得到的实际错误。

标签: python oracle cx-oracle


【解决方案1】:

好的,经过多次尝试和错误,我终于按照fn的建议,在cx_Oracle内部进行了调查以找出问题所在。

事实证明,许多参数和方法只能通过一些标志获得:

  • WITH_UNICODE 激活 encodingnencoding 属性
  • ORACLE_10G 激活 actionmoduleclientinfocurrent_schema

我检查并发现我已经针对版本 9 的 oracle 客户端编译了cx_Oracle...所以我针对版本 10.2.0.3 的 oracle 客户端重新编译,现在我可以访问这些属性。

遗憾的是文档中没有明确限制......我非常感谢源代码可用。

【讨论】:

    【解决方案2】:

    尝试重新安装 cx_Oracle。您的 cx_Oracle 可能搞砸了。你的操作系统和 python 版本是什么?

    【讨论】:

    • 我刚刚安装了它,之前没有以前的版本可以干扰...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 2018-01-20
    • 2021-08-19
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多