TL;DR:
I'm trying to debug what is actually being sent to the pyodbc.connect
function on connect in a custom dialect. I need to see the connection
string that is being sent to the pyodbc.connect function *right* before it
is sent but it has been difficult for me to unravel the layers of
indirection on the create_engine call.
Long version:
If you care for more information I have this DSN related connect string for
the custom dialect I am writing for Teradata:
engine =
sqlalchemy.create_engine("teradata://testsqlatd:password@td_testsqlatd",
encoding='utf-8', echo=True)
This connection string works and connects properly to my Teradata box
(yay!).
In my custom dialect I have subclassed so I can get some visibility into
the ODBC connect string SQLA is constructing:
def create_connect_args(self, url):
connector = super(TeradataDialect_pyodbc,
self).create_connect_args(url)
print connector
return connector
This code appears to call sqlalchemy/connectors/pyodbc.py
[create_connect_args]. And returns:
[['dsn=td_testsqlatd;UID=testsqlatd;PWD=password'], {}]
I assume that this string is roughly what is passed by SQLA to pyodbc at
some future point as the ODBC connection string. In my case the string
above connects successfully. Oddly enough though UID is not a valid ODBC
connection parameter for the Teradata ODBC driver. For Teradata the
parameter *must *be Username. Same with PWD, this isn't valid for the
Teradata ODBC driver. It should be Password.
According to my testing and the Teradata ODBC docs the valid version of
this ODBC connection string should be:
'dsn=td_testsqlatd;Username=testsqlatd;Password=password'
I have verified directly with pyodbc that the first form of the connect
string fails and the version directly above works, yet somehow in
SQLAlchemy it connects. Because of this I believe that SQLA is rewriting
the string further before connecting to the Teradata ODBC driver via
pyodbc. I can't find out where that is happening though. Because of this
I would like to intercept the pyodbc.connect call and see exactly what ODBC
connection string SQLA is invoking it with.
Any ideas how to log what exactly the connection string that SQLAlchemy is
sending to pyodbc.connect?
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.