2016-06-17 3 views
0
import pyodbc 
conn = pyodbc.connect('DRIVER={Teradata};DBCNAME=<DATABASE_NAME>;UID=<UID>;PWD=<UID>;QUIETMODE=YES;') 

Что на самом деле происходит в Driver = {} part? Это где я положил файл teradata .jar, такой как terajdbc4.jar?Python Query From Teradata pyobbc Module

Но это не работает, я получаю ошибку:

pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'terajdbc4.jar' : file not found (0) (SQLDriverConnect)") 

ответ

0

jaydebeapi попробовать, если вы хотите использовать драйвер JDBC, pyodbc будет работать только с традиционными драйверами ODBC, насколько я знаю.

import jaydebeapi 
conn = jaydebeapi.connect('com.teradata.jdbc.TeraDriver', 
          ['jdbc:teradata://%s/database=%s' % (SERVER,DB), USER, PASS], 
          ['/path/to/tdgssconfig.jar', '/path/to/terajdbc4.jar']) 
+0

Итак, какой драйвер для Teradata мне нужен, чтобы сделать работу pyodbc.connect? – brno792

0

Там, кажется, две проблемы:

  1. Как fivetentaylor упоминалось, вы пытаетесь использовать ODBC с драйвером JDBC - и они не работают вместе. Для использования ODBC вам нужен драйвер ODBC - для Teradata на Linux я думаю, this.

  2. Вам необходимо связать драйвер после его загрузки, чтобы все работало.

Для этого:

  1. Вы должны поместить этот файл в каталоге, где компоновщик будет найти его (вы можете использовать команду lld -v Баша, чтобы найти папки, где ваш компоновщик сканирует ЛИЭС).

  2. После того, как вы поставите этот драйвер в библиотеке, как правило, необходимо настроить драйвер в /etc/odbcinst.ini (смотрите here для объяснения правильной структуры файла.

  3. Наконец, вы используете имя из драйвер вы кладете в файле odbcinst на последнем этапе в качестве имени драйвера Так, например, если у вас есть драйвер, указанный в файле odbcinst.ini, как это:.

    [Teradata]

    Описание драйвера = Teradata

    Driver =/путь// водитель/файл

Вы бы использовать его как это:

import pyodbc 
conn = pyodbc.connect('DRIVER={Teradata};DBCNAME=<DATABASE_NAME>;UID=<UID>;PWD=<UID>;QUIETMODE=YES;') 

Надеется, что это помогает!