2017-01-14 3 views
1

최근 jaydebeapi가 업데이트되어 이제는 이전 코드와 연결할 수 없습니다. https://github.com/baztian/jaydebeapijaydebeapi 1.0.0의 최신 업데이트로 인해 연결 오류가 발생했습니다.

이 연결에 jaydebeapi 소스에서 문서입니다 :

>>> import jaydebeapi 
>>> conn = jaydebeapi.connect('org.hsqldb.jdbcDriver', 
...       'jdbc:hsqldb:mem:.', 
...       ['SA', ''], 
...       '/path/to/hsqldb.jar',) 
>>> curs = conn.cursor() 

을 그리고 이것은 내가 그 일을하고 어떻게 : 내가 가진

53  curs, conn = None, None 
54  try: 
55   thisdir = os.path.dirname(os.path.abspath(__file__)) 
56 
57   join = os.path.join 
58   conn = jaydebeapi.connect('com.teradata.jdbc.TeraDriver', 
59         ['jdbc:teradata://%s/CHARSET=UTF8' % system, username, password], 
60         jars=[join(thisdir, 'lib/tdgssconfig.jar'), 
61           join(thisdir, 'lib/terajdbc4.jar')]) 
62 
63 
64   curs = conn.cursor() 

오류 :

join(thisdir, 'lib/terajdbc4.jar')]) 
     File "/app/.heroku/python/lib/python2.7/site-packages/jaydebeapi/__init__.py", line 380, in connect 
     jconn = _jdbc_connect(jclassname, url, driver_args, jars, libs) 
     File "/app/.heroku/python/lib/python2.7/site-packages/jaydebeapi/__init__.py", line 199, in _jdbc_connect_jpype 
     return jpype.java.sql.DriverManager.getConnection(url, *dargs) 
    RuntimeError: No matching overloads found. at native/common/jp_method.cpp:121 

내 코드가 이전에 작동했지만 새로운 업데이트로 인해 중지되었습니다. 누군가 내가 내 코드에 어떤 변화를 주어야하는지 알려줄 수 있습니까?

답변

2
conn = jaydebeapi.connect('com.teradata.jdbc.TeraDriver', 
          'jdbc:teradata://%s/CHARSET=UTF8' % system, 
          [username, password], 
          jars=[join(thisdir, 'lib/tdgssconfig.jar'), 
            join(thisdir, 'lib/terajdbc4.jar')]) 

트릭을해야합니다. JayDeBeApi가 1.0.0으로 지금 사전으로 연결 속성을 지정할 수 있습니다 : 잠재적 인 호환성에 대한

conn = jaydebeapi.connect('com.teradata.jdbc.TeraDriver', 
          'jdbc:teradata://%s', 
          {'user': username, 'password': password, 
          'CHARSET': 'UTF8'}, 
          jars=[join(thisdir, 'lib/tdgssconfig.jar'), 
            join(thisdir, 'lib/terajdbc4.jar')]) 

changelog 정보 용은. connect 메소드의 매개 변수가 변경되었으므로 이전보다 명확해야합니다. 설명서도 올바르게 업데이트됩니다.

>>> help(jaydebeapi.connect) 

connect(jclassname, url, driver_args=None, jars=None, libs=None) 
    Open a connection to a database using a JDBC driver and return 
    a Connection instance. 

    jclassname: Full qualified Java class name of the JDBC driver. 
    url: Database url as required by the JDBC driver. 
    driver_args: Dictionary or sequence of arguments to be passed to 
      the Java DriverManager.getConnection method. Usually 
      sequence of username and password for the db. Alternatively 
      a dictionary of connection arguments (where `user` and 
      `password` would probably be included). See 
      http://docs.oracle.com/javase/7/docs/api/java/sql/DriverManager.html 
      for more details 
    jars: Jar filename or sequence of filenames for the JDBC driver 
    libs: Dll/so filenames or sequence of dlls/sos used as shared 
      library by the JDBC driver 
+0

감사에서

이봐, 나 또한 내 requirements.txt 파일에서 0.2.0로 버전을 잠금 시도했지만 작동하는 것 didnt한다. 'jaydebeapi == 0.2.0' – jxn

+0

하지만 내가 게시 한 코드는 작동합니까? 그것은 정말로해야합니다. – bastian

+0

따옴표, 중괄호 등을 다시 확인하십시오. – bastian