7

I am trying to connect to a datbase using pyodbc and running into following error,can anyone suggest how to overcome below error?

Installed pyodbc using the following commands

sudo apt-get install unixodbc-dev
pip install pyodbc

Code:-

#!/usr/bin/python
import pyodbc

server_name='odsdb.qualcomm.com'
database_name='ODS'
#cnx = pyodbc.connect("SERVER="+server_name+";DATABASE="+database_name)
cnx = pyodbc.connect("DRIVER={SQL Server};SERVER="+server_name+";DATABASE="+database_name)

db_cursor = cnx.cursor() 

print "List of tables in DB"
for row in db_cursor.tables():
    print row.table_name
print "\n"

Error:-

Traceback (most recent call last):
  File "mysql.py", line 7, in <module>
    cnx = pyodbc.connect("DRIVER={SQL Server};SERVER="+server_name+";DATABASE="+database_name)
user3654069
  • 345
  • 2
  • 6
  • 14

1 Answers1

1

You should start by setting up and configuring FreeTDS. Here is a sample configurations from my files, but I'm sure other variants will work also. One difference is that I'm using Django, but the result below still worked eventually, but it works much better with SQL authentication than with Windows Authentication.

From /etc/freetds/freetds.conf (use the IP of the server if DNS is not active for the server name).

# A typical Microsoft server
[MyServer]
        host = 10.0.0.10\path
        port = 1433
        tds version = 7.0

From /etc/odbcinst.ini

[FreeTDS]
Description = FreeTDS
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.s

From /etc/odbc.ini

[MyServer]
Description = "Some Description"
Driver = FreeTDS
ServerName = servername\path
Server = servername
Port = 1433
Database = DBNAME

Then this command connects me to the database.

tsql -S MyServer -U username@servername -P password

tufelkinder
  • 1,176
  • 1
  • 15
  • 37
  • 1
    Having same issue OP has. I have configured those 3 files like you have, and I can use tsql to connect and run SQL queries, but I still get the same error. I replaced MyServer with SQL Server. What haven't I done? – friartuck Aug 09 '15 at 02:06