Closed raayu83 closed 1 year ago
@xyzy-web, supporting multiple drivers should not be an issue. SQLAlchemy supports identification of drivers via the URL: https://docs.sqlalchemy.org/en/13/core/engines.html#database-urls. In folder sqlalchemy_exasol you can find how support for pyodbc and turbodbc is added. Following that schema, adding pyexasol should be possible. Would you be willing to conribute this?
In order to implement an SQLA
dialect/driver based on pyexasol
a dbapi
interface is required (pep-249).
Due to the fact that pyexasol
just provides this interface partially, we started implementing a dbapi
wrapper as a first step.
SQLA
independent test setup for integration and unit testsdbapi
pyexasol
based wrapper for connection required by dbapi
pyexasol
based wrapper for cursor required by dbapi
SQLA
driver based on the dbapi
wrapperspyexasol
is used be exposed to the end-user? "exa+pyexasol..."
vs "exa+ws..."
or "exa+websocket"
dbapi
wrapper and what should it's naming/structure be?For further details on the current status, see also PR-278.
The DBAPI2 compliant web-socket driver has been implemented (see also PR-278).
As next step the actual SQLA
dialect/driver implementation will be started.
SQLA
independent test setup for integration and unit testsdbapi
pyexasol
based wrapper for connection required by dbapi
pyexasol
based wrapper for cursor required by dbapi
exa+ws...
which will be websockets with the provided "default" implementationSQLA
driver based on the dbapi
wrapper (exasol.driver.websocket
)First draft of a websocket based dialect was added (see #320). The current results of the SQLA compliance test suite are the following:
1 :heavy_check_mark: Passed , 287 :heavy_multiplication_x: Failed , 305 :yellow_circle: Ignored
142 :heavy_check_mark: Passed , 50 :heavy_multiplication_x: Failed , 365 :yellow_circle: Ignored
for further details see #320
147 :heavy_check_mark: Passed , 45 :heavy_multiplication_x: Failed , 365 :yellow_circle: Ignored
for further details see #320
149 :heavy_check_mark: Passed , 43 :heavy_multiplication_x: Failed , 365 :yellow_circle: Ignored
for further details see #320
152 :heavy_check_mark: Passed , 40 :heavy_multiplication_x: Failed , 365 :yellow_circle: Ignored
for further details see #320
:spiral_notepad: Note Looks like most of the remaining failing tests are due to incorrect/missing DBAPI type conversions.
162 :heavy_check_mark: Passed , 30 :heavy_multiplication_x: Failed , 365 :yellow_circle: Ignored
for further details see #320
172 :heavy_check_mark: Passed , 20 :heavy_multiplication_x: Failed , 365 :yellow_circle: Ignored
for further details see #320
176 :heavy_check_mark: Passed , 15 :heavy_multiplication_x: Failed , 366 :yellow_circle: Ignored
for further details see #320
178 :heavy_check_mark: Passed , 13 :heavy_multiplication_x: Failed , 366 :yellow_circle: Ignored
for further details see #320
As of today, the websocket dialect, did not pass 100% of the expected SQLA compliance test suite. Still we expect the basic features to work. Therefore, the decision was made to release a beta version. This will give us a faster feedback cycle and allow users to test and play around with the new functionality. Once the websocket driver is stabilized it will be announced and marked accordingly.
178 :heavy_check_mark: Passed , 13 :heavy_multiplication_x: Failed , 366 :yellow_circle: Ignored
181 :heavy_check_mark: Passed , 1 :heavy_multiplication_x: Failed , 29 :yellow_circle: Ignored
for further details see #320
Once the related PR #320 is merged s new release, containing the beta should be created.
178 :heavy_check_mark: Passed , 13 :heavy_multiplication_x: Failed , 366 :yellow_circle: Ignored
for further details see #320
Once the related PR #320 is merged s new release, containing the beta should be created.
I wonder if it would be possible to add a pyexasol backend as an alternative to odbc?