Python > Connection with JDBC to Oracle service name (jaydebeapi)

纵饮孤独 提交于 2020-05-27 13:13:25

问题


This sample code is used to connect in Python to Oracle SID.

import jpype
import jaydebeapi
jHome = jpype.getDefaultJVMPath()
jpype.startJVM(jHome, '-Djava.class.path=/path/to/ojdbc6.jar')
conn = jaydebeapi.connect('oracle.jdbc.driver.OracleDriver','jdbc:oracle:thin:user/password@DB_HOST_IP:1521:DB_NAME')

How can we connect to Oracle Service Name?


回答1:


Regarding your connection string, you could use TNS syntax (read on, here), as opposed to host:port:sid syntax you're using now. In that case you would describe SERVICE_NAME inside CONNECT_DATA, as follows:

   jaydebeapi.connect('oracle.jdbc.driver.OracleDriver','[MYUSER]/[MYPASS]@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=[MYHOST])(PORT=1521))(CONNECT_DATA=(SERVER=dedicated) (SERVICE_NAME=[MYSERVICENAME])))')

By the way - you could also use cx_Oracle to connect to oracle - no java hassle. (just a suggestion)




回答2:


This way should work

  conn = jaydebeapi.connect('oracle.jdbc.driver.OracleDriver','jdbc:oracle:thin:user/password@//DB_HOST_IP:1521/DB_NAME')


来源:https://stackoverflow.com/questions/39568378/python-connection-with-jdbc-to-oracle-service-name-jaydebeapi

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!