python - cx_Oracle doesn't connect when using SID instead of service name on connection string -


i have connection string looks this

con_str = "myuser/mypass@oracle.sub.example.com:1521/ora1" 

where ora1 sid of database. using information in sql developer works fine, meaning can connect , query without problems.

however, if attempt connect oracle using string, fails.

cx_oracle.connect(con_str)  databaseerror:  ora-12514:  tns:listener   not   know  of  service  requested  in  connect  descriptor 

this connection string format works if ora1 service name, though.

i have seen other questions seem have reverse of problem (it works sid, not service name)

what proper way connect oracle, using cx_oracle, using sid , not service name? how do without need adjust tnsnames.ora file? application distributed many users internally , making changes tnsnames file less ideal when dealing users without administrator privileges on windows machines. additionally, when use service name, don't need touch file @ , keep way.

i similar scenario, able connect database using cx_oracle.makedsn() create dsn string given sid (instead of service name):

dsnstr = cx_oracle.makedsn("oracle.sub.example.com", "1521", "ora1") 

this returns

(description=(address_list=(address=(protocol=tcp)(host=oracle.sub.example.com)(port=1521)))(connect_data=(sid=ora1))) 

which can used cx_oracle.connect() connect database:

con = cx_oracle.connect(user="myuser", password="mypass", dsn=dsnstr) print con.version con.close() 

Comments

Popular posts from this blog

database - VFP Grid + SQL server 2008 - grid not showing correctly -

jquery - Set jPicker field to empty value -

.htaccess - htaccess convert request to clean url and add slash at the end of the url -