Vâng, tôi hy vọng đây không phải là bản sao, tìm kiếm không mang lại bất kỳ điều gì hữu ích.Thay đổi lược đồ bằng cách sử dụng cx_Oracle
Tôi đã từng đùa giỡn với cx_Oracle
trong vài ngày qua, cài đặt và sử dụng nó. Mọi thứ đều tốt đẹp cho đến khi tôi đạt đến vấn đề hiện tại của mình: Tôi muốn thay đổi lược đồ của mình. Nếu tôi đang sử dụng sqlplus một 'phiên làm thay đổi tập hợp current_schema = toto' đơn giản; sẽ làm, nhưng tôi không biết làm thế nào để có được xung quanh nó với cx_Oracle
.
Tôi đã tải xuống phiên bản nguồn mới nhất: cx_Oracle-5.0.2.tar.gz.
Theo việc thay đổi lược đồ documentation là một trường hợp đơn giản về thiết lập Connection.current_schema
phải là thuộc tính ghi đọc ... sự cố là đối tượng Connection
của tôi không có thuộc tính 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']
Đang cố gắng để thiết lập các thuộc tính sử dụng
>>> c.current_schema = 'toto'
kết quả trong một lỗi ... __setattr__
đã rõ ràng được ghi đè để ngăn chặn nó.
Vì vậy, ... có ai biết làm cách nào không?
Đây là lỗi tôi gặp phải.
>>> 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
Và đây là các thông tin về hệ điều hành và python:
SUSE LINUX Enterprise Server 9 (x86_64)
VERSION = 9
PATCHLEVEL = 3
Và tôi sử dụng python 2.6.2 (biên soạn cho 64bits)
Tôi cũng biên soạn cx_Oracle
cho 64bits, trên rất cùng một máy.
Không tồn tại dưới dạng thuộc tính hiển thị không có nghĩa là nhiều. '__setattr__' có thể được ghi đè để thực hiện nó theo một cách bí ẩn nào đó. Điều quan trọng hơn 'dir (c)' là lỗi thực sự bạn thực sự có khi bạn thực sự đã làm 'c.current_schema = 'toto''. –