Hi !

While working on some improvements to PyAthena, I was looking into means to 
pass some parameters to the dialect. Going through the code of the `
create_engine()` function code, I saw that dialects `__init__()` where 
given dialect kwargs passed as kwargs 
<https://github.com/sqlalchemy/sqlalchemy/blob/db85d28a857945ce021e27a187a14999eeb5c89e/lib/sqlalchemy/engine/create.py#L480-L482>
 
to the create_engine() function. But the dialect does not have access to 
the connection URL.

E.g. you can do:

e = create_engine('<url>', dialect_kwarg1=<value>, 
dialect_kwarg2='<value>', ...)

But not:

e = create_engine('<url>?dialect_kwarg1=<value>&dialect_kwarg2=<value>', 
...)
# or
e = create_engine('<url>?kwarg1=<value>&kwarg2=<value>', ...)
# though I guess cause you can pass other kind of args, like pool args, 
you'd like to keep # the `<dialect>_` prefix

I was wondering why? Particularly given that since the connection URL is 
what determines the dialect, keeping dialect specific stuff in the URL does 
not seem that far fetch. Or am I overlooking something?

Why does it matters? I find that passing arguments through the URL very 
handy. Allows to easily override certain configuration parameters, with 
touching any code. It also makes it easy to exchange settings with other 
people.

If there are no particular reasons to not do this, would you accept a PR to 
deal with this?

Thanks,
Nicolas.

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
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 sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/f185f29c-9ec2-48b8-a5de-fe6112ab25c5n%40googlegroups.com.

Reply via email to