Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create a jTDS connection string in Python

I'm trying to establish a jTDS connectivity using Python. Can anyone please help me in accomplishing that?

From the SQL Server, I generally connect using the below connection string:

jdbc:jtds:sqlserver://DBServer:port/DBInstance;useNTLMv2=true;domain=Domain

I'm trying to do as below in Python:

import pyodbc
conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=DBName,port;'
                      'Database=database;'
                      'Truster_Connection=yes;'
                      'uid=user;'
                      'pwd=password;'
                )

cursor = conn.cursor()
cursor.execute('SELECT * from Table')

for row in cursor:
    print(row)

Error:

pyodbc.InterfaceError: ('28000', "[28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'USER'. (18456) (SQLDriverConnect); [28000] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0); [28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'USER'. (18456); [28000] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute (0)"))
like image 680
Rosy Avatar asked Feb 08 '26 01:02

Rosy


1 Answers

If you are specifically trying to connect to MS SQL Server using jTDS as opposed to ODBC, then you can use the jaydebeapi python package.

See the following code (Python 3):

import sys
import jaydebeapi


def main():
    try:
        # jTDS Driver.
        driver_name = "net.sourceforge.jtds.jdbc.Driver"

        # jTDS Connection string.
        connection_url = "jdbc:jtds:sqlserver://<server_hostname>:<port>/<database_name>"

        # jTDS Connection properties.
        # Some additional connection properties you may want to use
        # "domain": "<domain>"
        # "ssl": "require"
        # "useNTLMv2": "true"
        # See the FAQ for details http://jtds.sourceforge.net/faq.html
        connection_properties = {
            "user": "username",
            "password": "password",
        }

        # Path to jTDS Jar
        jar_path = "<path_to>\\jtds-1.3.1.jar"

        # Establish connection.
        connection = jaydebeapi.connect(driver_name, connection_url, connection_properties, jar_path)
        cursor = connection.cursor()

        # Execute test query.
        cursor.execute("select 1 as test_connection")
        res = cursor.fetchall()
        if res:
            print(str(res))  # Should print [(1,)]

    except Exception as err:
        print(str(err))


if __name__ == "__main__":
    sys.exit(main())

Prior to this, you need to complete the following:

  1. Download and install JDK/JRE from here
  2. pip install jaydebeapi or download from here
  3. Download jtds from here
  4. Update connection_url, connection_properties, jar_path.
like image 74
marksy_91 Avatar answered Feb 12 '26 15:02

marksy_91