2016-03-15 4 views
1

Я хотел бы подключиться из ноутбука IPython к базе данных SQL Server через интегрированную систему безопасности.Подключение от Python к SQL Server

Возможно ли это? Я предполагаю, что да.

Как отформатировать строку подключения следующим образом?

import pandas as pd 
import pandas.io.sql as psql 
sql = "SELECT * FROM WHdb.dbo.vw_smallTable" 
cnx = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=WHdb;Data Source=OurServerName" 
data = psql.read_sql(sql, cnx) 

Это только что дает ошибку. Я неправильно понял cnx?

+1

Пожалуйста, сообщите полную ошибку – IanAuld

+0

@IanAuld должен был отойти от рабочей машины (спать!) - завтра я добавлю msg. На первый взгляд это выглядит нормально? Правильно ли я использую строку в качестве второго аргумента 'read_sql'? – whytheq

+0

Я сомневаюсь, что я буду очень полезен, поскольку никогда не использовал SQLServer с Python. Однако этот вопрос, как написано, попадает прямо в «Что не работает этот код?» близко причина. Я не буду голосовать, но он рискует быть закрытым, так как это – IanAuld

ответ

4

Вам необходимо установить пакет, pypyodbc

!pip install pypyodbc 

Затем, вы можете импортировать его следующим образом:

import pypyodbc as podbc 

Теперь вы можете создать соединение:

conn = podbc.connect("Driver={SQL Server};Server=<YourServer>;Database=<YourDatabase>;uid=<YourUserName>;pwd=<YourPassword>" 

Наконец , вы получаете свои данные следующим образом:

cursor = conn.cursor() 
sql = "SELECT * FROM WHdb.dbo.vw_smallTable" 
cursor.execute(sql) 
data = cursor.fetchone() 
while data: 
    print(str(data[0]) + ", " + ... + ", " + str(data[n-1])) 
    data = cursor.fetchone() 
conn.close() 

Обратите внимание, что n = количество столбцов в таблице.

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