Tôi gặp trường hợp tương tự, tôi có thể kết nối với cơ sở dữ liệu bằng cách sử dụng cx_Oracle.makedsn()
để tạo dsn chuỗi có SID
nhất định (thay vì tên dịch vụ):
dsnStr = cx_Oracle.makedsn("oracle.sub.example.com", "1521", "ora1")
Điều này trả về một cái gì đó giống như
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle.sub.example.com)(PORT=1521)))(CONNECT_DATA=(SID=ora1)))
sau đó có thể được sử dụng với cx_Oracle.connect()
để kết nối với cơ sở dữ liệu:
con = cx_Oracle.connect(user="myuser", password="mypass", dsn=dsnStr)
print con.version
con.close()