2015-04-01 6 views
1

Код

Это код, который я вступил, используя Python 2.6 в Linux Red Hat 64bitPyodbc Ошибка соединения

import pyodbc 

print pyodbc.dataSources() 

print "Connecting via ODBC" 

conn = pyodbc.connect("DRIVER={NetezzaSQL};SERVER=localhost;PORT=5480;DATABASE=Database;UID=santiago;PWD=ha123;") 

Ошибка

Это истинная ошибка я получил при запуске pyodbc. Я не знаю, что это за язык или что это значит?

{'ODBC': '', 'NetezzaSQL': '/usr/local/nz_7.2.0.3/lib64/libnzodbc.so'} 
Connecting via ODBC 
Traceback (most recent call last): 
    File "connect.py", line 41, in <module> 
conn = pyodbc.connect("DRIVER{NetezzaSQL};SERVER=localhost;PORT=5480;DATABASE=Database;UID=santiago;PWD=ha123;") 
pyodbc.Error: ('H00', '[H00] [unixODBC]Sre n/rpr trbtsaeepy\xc8 (33) (SQLDriverConnectW)') 

obdcinst.ini

Это obdcinst файл используется

[ODBC Drivers] 
NetezzaSQL = Installed 

[NetezzaSQL] 
Driver   = /usr/local/nz_7.2.0.3/lib64/libnzodbc.so 
Setup   = /usr/local/nz_7.2.0.3/lib64/libnzodbc.so 
APILevel   = 1 
ConnectFunctions = YYN 
Description  = Netezza ODBC driver 
DriverODBCVer = 03.51 
DebugLogging  = false 
LogPath   = /tmp 
UnicodeTranslationOption = utf8 
CharacterTranslationOption = all 
PreFetch   = 256 
Socket   = 16384 

obdc.ini

Этот файл конфигурации ODBC используется

; 
; odbc.ini 
; 
[ODBC Data Sources] 
NZSQL = NetezzaSQL 


[NetezzaSQL] 
;Path of a driver used for database connection 
Driver    = /usr/local/nz_7.2.0.3/lib64/libnzodbc.so 

;A decription used to identify the database connection properties. 
Description   = NetezzaSQL ODBC 

;The name of a machine or IP address where the database is located. 
Servername   = 127.0.0.1 

;The port number to connect. 
Port     = 5480 

;The name of a database. 
Database    = dev 

;The name of a valid user. 
Username    = guest 

;The password for the user. 
Password    = password 

;Only Select SQL statements will be allowed if this field is checked. 
ReadOnly    = false 

;When this option is enabled and the application bindtype is same as backend 
;datatype the query performance will be faster.Query performance gain will be achieved 
;only for single select statements (not for batch queries).It also works in case when 
;application bind type is different than backend datatype but there are some restrictions on it. 
FastSelect   = false 

;When set to true, system tables will be included in the available table list. 
ShowSystemTables  = false 

;When set to true, use old (2.5) functionality for returning schemas in SQLTables. 
LegacySQLTables  = false 

;Specifies login timeout in seconds. 
LoginTimeout   = 0 

;Specifies query timeout in seconds. 
QueryTimeout   = 0 

;Specifies date format as follows - 
; 1: YMD 
; 2: MDY 
; 3: DMY 
DateFormat   = 1 

;When selected, driver treats SQL_C_NUMERIC buffers as SQL_C_CHAR buffers. 
NumericAsChar   = false 

;Return SQL_BIT as "1"/"0" when char. 
SQLBitOneZero   = false 

;When enabled, replaces all occurences of CRLF, CR and LF with a single space. 
StripCRLF    = false 

;Specifies level of security on the system 
securityLevel   = preferredUnSecured 

;Name of the Root CA certificate. 
caCertFile   = 

;Specifies maximum errors allowed. 0 value means no limit on loadMaxErrors value. 
;loadMaxErrors   = 1 

;If value is true, it rounds the data of numeric columns whose precision exceeds the precision defined. 
;loadRoundFraction  = 0 


[ODBC] 
IANAAppCodePage=4 
InstallDir=/opt/odbc32v51 
Trace=0 
TraceDll=/opt/odbc32v51/lib/odbctrac.so 
TraceFile=odbctrace.out 
UseCursorLib=0 

Если что-нибудь еще необходим для определения решения, пожалуйста, дайте мне знать.

ответ

0

Я не могу сказать вам, что означает ошибка, поскольку я тоже не признаю этот язык. Тем не менее, порт Netezza ODBC составляет 5480, тогда как вы укажете 5668 в своем методе подключения. Кроме того, база данных, на которую вы действительно хотите подключиться, на самом деле называется «База данных»?

+0

Я изменил атрибуты, так как не очень удобно размещать личную информацию в Интернете, но я получил правильную базу данных и 5480 включен в исходный код. Я запускал тот же код в Windows, используя python с оригинальными атрибутами, и он работал, но на моей машине Linux он не работает. – fandangorightnow

+0

Возможно, вы захотите изменить его последовательно, в противном случае он выглядит как ошибка конфигурации/параметра (см. Порт, который вы укажете позже в своем примере ODBC.ini) – ScottMcG

+0

Спасибо, я отредактировал вопрос. Считаете ли вы, что это может быть проблема интерпретатора python? – fandangorightnow