2015-06-15 2 views
1

Я прочитал все Справку страницы из питона библиотеки ODBC, а также другие примеры и удалось подключиться к DSN, используя следующий код:Подключение к ODBC с помощью pyODBC

cnxn = pyodbc.connect("DSN=DSNNAME") 
cursor = cnxn.cursor() 
cursor.tables() 
rows = cursor.fetchall() 
for row in rows: 
    print row.table_name 

, но для всего остального Я получаю эту ошибку:

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') 

Я знаю, что я могу подтянуть свои данные с помощью Microsoft Access, перейдя через следующие шаги: Создание новой базы данных, нажав на вкладку внешних данных нажмите кнопку Далее и выберите ODBC базы данных, используйте ссылку на источник данных, создав связанную таблицу, в Sele ct data source window, выбрав Machine Data source и выберите NAME2, который имеет тип системы, нажмите okay и выберите таблицу acr.Table_one_hh, затем выберите поля в таблице, на которые я хочу посмотреть, например City, State, Country, Region и т. д. Когда я наводил указатель на имя таблицы, он показывает имя DSN, описание, доверенное соединение = да, APP, имя базы данных и имя таблицы.

Я попытался два способа, первый

cnxn = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};SERVER=mycomputername;DATABASE=mydatabase;Trusted_Connection=yes;') 
cursor = cnxn.cursor() 

который выдает ошибку:

Error: ('08001', '[08001] [Microsoft][SQL Server Native Client 10.0]Named Pipes Provider: Could not open a connection to SQL Server [2]. (2) (SQLDriverConnect); [HYT00] [Microsoft][SQL Server Native Client 10.0]Login timeout expired (0); [08001] [Microsoft][SQL Server Native Client 10.0]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. (2)') 

Я попытался

cnxn = pyodbc.connect("DSN=DSNNAME, DATABASE=mydatabase") 
cursor = cnxn.cursor() 
cursor.execute("""SELECT 1 AS "test column1" from acr.Table_one_hh""") 
cursor.tables() 
rows = cursor.fetchall() 
for row in rows: 
    print row.table_name 

который дал ошибку

Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)') 
+1

Ваш последний пример неверен, потому что разделитель для атрибутов строки соединения является точкой с запятой (';'), а не запятой (','). Попробуйте 'DSN = DSNNAME; DATABASE = mydatabase'. –

ответ

1

Мне удалось решить мою проблему. Мой код действительно не изменился.

cnxn = pyodbc.connect("DSN=BCTHEAT") 
cursor = cnxn.cursor() 
cursor.execute("select * from acr.Table_one_hh") 
row = cursor.fetchall() 

затем я написал результаты в файл csv.

Смежные вопросы