| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
This adds the new `name` keyword argument to `Connection.prepare()` and `PreparedStatement.get_name()` method returning the name of a statement. Some users of asyncpg might find it useful to be able to control how prepared statements are named, especially when a custom prepared statement caching scheme is in use. Specifically, This should help with pgbouncer support in SQLAlchemy asyncpg dialect. Fixes: #837.
Changes ------- * Improve SSL option compatibility in URIs (by @fantix in 383c711 for #827) * Add `Pool` methods to determine its min, max, current and idle size (by @elprans in 603e386 for #849) * Make it possible to specify a statement name in `Connection.prepare()` (by @elprans in 03a3d18 for #846) * Implement support for `multirange` types (by @elprans in d64a44a for #851) Fixes ----- * Make sure timeout callbacks always get cleaned up (by @elprans in dad2691 for #831) * Update `__all__` statements to a simpler form that is better supported by typecheckers (by @bschnurr in 0a3ae7f for #828) * Fix `test_timetz_encoding` on Python 3.10 (by @elprans in 3a90fef) * Fix a bunch of `ResourceWarnings` in the test suite (by @elprans in 2f4fe53) * Fix `SSLContext` deprecation warnings (by @elprans in 4d39a05) * Fix the description of the database argument to `connect()` (by @elprans in a2a9237 for #847) * Fix parsing of IPv6 addresses in the connection URI (by @elprans in f900b73 for #845) * Improve diagnostics of invalid `executemany()` input (by @elprans in a8fc21e for #848)
Changes ------- * Improve SSL option compatibility in URIs (by @fantix in 383c711 for #827) * Add `Pool` methods to determine its min, max, current and idle size (by @elprans in 603e386 for #849) * Make it possible to specify a statement name in `Connection.prepare()` (by @elprans in 03a3d18 for #846) * Implement support for `multirange` types (by @elprans in d64a44a for #851) Fixes ----- * Make sure timeout callbacks always get cleaned up (by @elprans in dad2691 for #831) * Update `__all__` statements to a simpler form that is better supported by typecheckers (by @bschnurr in 0a3ae7f for #828) * Fix `test_timetz_encoding` on Python 3.10 (by @elprans in 3a90fef) * Fix a bunch of `ResourceWarnings` in the test suite (by @elprans in 2f4fe53) * Fix `SSLContext` deprecation warnings (by @elprans in 4d39a05) * Fix the description of the database argument to `connect()` (by @elprans in a2a9237 for #847) * Fix parsing of IPv6 addresses in the connection URI (by @elprans in f900b73 for #845) * Improve diagnostics of invalid `executemany()` input (by @elprans in a8fc21e for #848)
Changes ------- * Improve SSL option compatibility in URIs (by @fantix in 383c711 for #827) * Add `Pool` methods to determine its min, max, current and idle size (by @elprans in 603e386 for #849) * Make it possible to specify a statement name in `Connection.prepare()` (by @elprans in 03a3d18 for #846) * Implement support for `multirange` types (by @elprans in d64a44a for #851) Fixes ----- * Make sure timeout callbacks always get cleaned up (by @elprans in dad2691 for #831) * Update `__all__` statements to a simpler form that is better supported by typecheckers (by @bschnurr in 0a3ae7f for #828) * Fix `test_timetz_encoding` on Python 3.10 (by @elprans in 3a90fef) * Fix a bunch of `ResourceWarnings` in the test suite (by @elprans in 2f4fe53) * Fix `SSLContext` deprecation warnings (by @elprans in 4d39a05) * Fix the description of the database argument to `connect()` (by @elprans in a2a9237 for #847) * Fix parsing of IPv6 addresses in the connection URI (by @elprans in f900b73 for #845) * Improve diagnostics of invalid `executemany()` input (by @elprans in a8fc21e for #848)
I faced an issue related to pg bouncer and prepared statement cache flow in asyncpg dialect. Regarding this discussion #6467 I prepared PR to support an optional parameter `name` in prepared statement which is allowed, since 0.25.0 version in `asyncpg` MagicStack/asyncpg#846 **UPD:** the issue with proposal: #9608 ### Description Added optional parameter `name_func` to `AsyncAdapt_asyncpg_connection` class which will call on the `self._connection.prepare()` function and populate a unique name. so in general instead this ```python from uuid import uuid4 from asyncpg import Connection class CConnection(Connection): def _get_unique_id(self, prefix: str) -> str: return f'__asyncpg_{prefix}_{uuid4()}__' engine = create_async_engine(..., connect_args={ 'connection_class': CConnection, }, ) ``` would be enough ```python from uuid import uuid4 engine = create_async_engine(..., connect_args={ 'name_func': lambda: f'__asyncpg_{uuid4()}__', }, ) ``` ### Checklist <!-- go over following points. check them with an `x` if they do apply, (they turn into clickable checkboxes once the PR is submitted, so no need to do everything at once) --> This pull request is: - [ ] A documentation / typographical error fix - Good to go, no issue or tests are needed - [ ] A short code fix - please include the issue number, and create an issue if none exists, which must include a complete example of the issue. one line code fixes without an issue and demonstration will not be accepted. - Please include: `Fixes: #<issue number>` in the commit message - please include tests. one line code fixes without tests will not be accepted. - [x] A new feature implementation - please include the issue number, and create an issue if none exists, which must include a complete example of how the feature would look. - Please include: `Fixes: #<issue number>` in the commit message - please include tests. **Have a nice day!** Fixes: #9608 Closes: #9607 Pull-request: #9607 Pull-request-sha: b4bc8d3 Change-Id: Icd753366cba166b8a60d1c8566377ec8335cd828
| Back | FazBrowse Home | New Git URL |
This adds the new name keyword argument to Connection.prepare() and
PreparedStatement.get_name() method returning the name of a statement.
Some users of asyncpg might find it useful to be able to control how
prepared statements are named, especially when a custom prepared
statement caching scheme is in use. Specifically, This should help with
pgbouncer support in SQLAlchemy asyncpg dialect.
Fixes: #837.