cx_oracle을 사용하여 스키마 변경
문제
글쎄, 나는 이것이 복제본이 아니기를 바랍니다. 검색은 유용한 것을 얻지 못했습니다.
나는 함께 놀았다 cx_Oracle
지난 며칠 동안 설치 및 사용. 현재 문제에 도달 할 때까지 모든 것이 잘 진행되었습니다. 스키마를 변경하고 싶습니다. sqlplus를 사용하는 경우 간단한 'Alter Session Set Current_schema = toto;' 할 것이지만, 나는 그것을 둘러싼 방법을 모른다 cx_Oracle
.
최신 소스 버전 인 CX_ORACLE-5.0.2.tar.gz를 다운로드했습니다.
에 따르면 선적 서류 비치 스키마 변경은 간단한 설정입니다 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를 사용합니다 (64bits 용 컴파일)
나는 또한 컴파일했다 cx_Oracle
64 비트의 경우, 동일한 기계에서.
해결책
좋아요, 마침내 많은 시도와 오류 후에 fn
내부의 제안과 조사 cx_Oracle
무엇이 잘못되었는지 찾기 위해.
여러 인수와 방법은 일부 깃발을 통해서만 사용할 수 있다는 것이 밝혀졌습니다.
WITH_UNICODE
활성화됩니다encoding
그리고nencoding
속성ORACLE_10G
활성화됩니다action
,module
,clientinfo
그리고current_schema
나는 내가 편집했는지 확인하고 발견했다 cx_Oracle
Oracle 클라이언트의 버전 9에 비해 ... 그래서 나는 Oracle 클라이언트의 10.2.0.3 버전에 대해 충신되었으며 이제 이러한 속성에 액세스 할 수 있습니다.
문서에서 제한이 제한되지 않았다는 것은 부끄러운 일입니다. 소스 코드를 사용할 수 있다는 사실에 매우 감사합니다.
다른 팁
cx_oracle을 다시 설치하십시오. 당신의 cx_oracle은 아마도 엉망이 될 것입니다. OS와 파이썬 버전은 무엇입니까?