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)"))
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:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With