问题
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)"))
回答1:
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:
- Download and install JDK/JRE from here
- pip install jaydebeapi or download from here
- Download jtds from here
- Update connection_url, connection_properties, jar_path.
来源:https://stackoverflow.com/questions/55376100/create-a-jtds-connection-string-in-python