Bueno, espero que esto no sea un duplicado, la búsqueda no produjo nada útil.Cambiando el esquema usando cx_Oracle
He estado jugando con cx_Oracle
durante los últimos días, instalándolo y usándolo. Todo fue bien hasta que llegué a mi problema actual: me gustaría cambiar mi esquema. Si estuviera usando sqlplus, un simple 'alter session set current_schema = toto;' haría, pero no sé cómo evitarlo con cx_Oracle
.
He descargado la última versión de la fuente: cx_Oracle-5.0.2.tar.gz.
De acuerdo con la documentation cambio de esquema es un simple caso de la configuración Connection.current_schema
que debe ser un atributo de lectura-escritura ... el problema es mi objetivo Connection
no tiene ningún atributo 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']
Tratar de establecer el atributo mediante
>>> c.current_schema = 'toto'
resultados en un error ... __setattr__
aparentemente ha sido anulado para evitarlo.
Entonces ... ¿alguien sabe cómo hacerlo?
Aquí está el error que obtuve.
>>> 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
Y aquí la información acerca del sistema operativo y Python:
SUSE LINUX Enterprise Server 9 (x86_64)
VERSION = 9
PATCHLEVEL = 3
Y uso de Python 2.6.2 (compilado para 64bits)
Yo compilé cx_Oracle
de 64bits, en el mismo misma máquina
No existir como un atributo visible no significa mucho. '__setattr__' podría ser anulado para implementarlo de alguna manera misteriosa. Lo que es más importante que 'dir (c)' es el error real que realmente obtuviste cuando hiciste 'c.current_schema = 'toto''. –