#python #odbc #teradata #pyodbc #unixodbc
#python #odbc #teradata #pyodbc #unixodbc
Вопрос:
Я пытаюсь подключить TD к Python в Linux.
Я получил эту работу в Windows:
import pyodbc
conn = pyodbc.connect('DRIVER={Teradata};DBCNAME=<HOST IP>;UID=<UID>;PWD=<UID>;QUIETMODE=YES;')
cursor = conn.cursor()
sql = 'select * from table_name'
cursor.execute(sql)
rows = cursor.fetchall()
conn.close()
print rows
Шаги, которые я выполнил, чтобы сделать это в Linux:
- Установите pyodbc
- Установите TeraGSS, tdicu, cliv2, piom, tdodbc
- Выполните следующее:
import pyodbc
conn = pyodbc.connect('DRIVER={Teradata};DBCNAME=<HOST IP>;UID=<UID>;PWD=<UID>;QUIETMODE=YES;')
pyodbc.Ошибка: (‘IM002’, ‘[IM002] [unixODBC] [Диспетчер драйверов] Имя источника данных не найдено, и драйвер по умолчанию не указан (0) (SQLDriverConnect)’)
Я пропустил какой-либо шаг настройки после установки?
Окружающая среда:
Python 2.6.6 (r266: 84292, октябрь 12 2012, 14:23:48) [ GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] на linux2
Комментарии:
1. Это может быть хорошим руководством для проверки правильности ваших настроек
Ответ №1:
Строка, которую вы передаете в качестве ДРАЙВЕРА, должна
a) имя драйвера в вашем файле odbcinst.ini или
б) полный путь к общему объекту драйвера ODBC.
Поскольку вы используете первый метод, я бы посоветовал вам запустить odbcinst -j
, чтобы узнать, где находится ваш файл odbcinst.ini, и проверить, определены ли какие-либо драйверы.
Разделы драйверов начинаются с [MYDRIVERNAME], поэтому у вас должен быть раздел, начинающийся с [Teradata], и он должен содержать пару ключевое слово / значение что-то вроде driver = /path/to/teradata/driver/shared_object . Если вы определили драйвер [Teradata], проверьте, существует ли общий объект, на который указано ключевое слово «driver», доступен для чтения / исполнения вами и не имеет неразрешенных зависимостей (запустите ldd на нем).