10

I'd like to connect from IPython notebook to a SQL-Server database via integrated security.

Is this possible? I'm guessing yes it is.

How do I format the connection string in the following?

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)

This just gives an error. Am I going about the cnx incorrectly?

4
  • 1
    Please post the full error Commented Mar 15, 2016 at 20:28
  • @IanAuld had to step away from the work machine (to sleep!) - I'll add the msg tomorrow. On the face of it does it look ok? Am I correct using a string in that way as the second argument of read_sql? Commented Mar 15, 2016 at 21:18
  • I doubt I'll be much help as I've never used SQLServer with Python. However this question as written falls squarely in to the "What isn't this code working?" close reason. I won't vote to close but it does run the risk of being closed as is Commented Mar 15, 2016 at 23:10
  • @IanAuld I hope this helps me - will try tomorrow: stackoverflow.com/questions/16515420/… Commented Mar 15, 2016 at 23:24

2 Answers 2

12

You need to install the package, pypyodbc

!pip install pypyodbc

Then, you can import it as follows:

import pypyodbc as podbc

You can now create the connection:

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

Finally, you fetch your data as follows:

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()

Note that n = number of columns in your table.

Sign up to request clarification or add additional context in comments.

Comments

2

This is what worked for me well...

import pyodbc

server = 'myserver'

database = 'mydb'

username = 'myusername'

password = 'mypassword'



#Connection String

connection = pyodbc.connect('DRIVER={SQL Server Native Client 11.0};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)

cursor = connection.cursor()



#Sample select query

cursor.execute("SELECT @@version;")

row = cursor.fetchone()

while row:

    print row[0]

    row = cursor.fetchone()

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.