Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve diagnostics of invalid executemany() input #848

Merged
merged 1 commit into from
Nov 16, 2021

Conversation

elprans
Copy link
Member

@elprans elprans commented Nov 7, 2021

This adds a check that elements of sequence passed to executemany()
are proper sequences themselves and notes the offending sequence element
number in the exception message. For example:

await self.con.executemany(
    "INSERT INTO exmany (b) VALUES($1)"
    [(0,), ("bad",)],
)

DataError: invalid input for query argument $1 in element #1 of
           executemany() sequence: 'bad' ('str' object cannot be
           interpreted as an integer)

Fixes: #807

This adds a check that elements of sequence passed to `executemany()`
are proper sequences themselves and notes the offending sequence element
number in the exception message.  For example:

    await self.con.executemany(
        "INSERT INTO exmany (b) VALUES($1)"
        [(0,), ("bad",)],
    )

    DataError: invalid input for query argument $1 in element #1 of
               executemany() sequence: 'bad' ('str' object cannot be
               interpreted as an integer)

Fixes: #807
@elprans elprans merged commit a8fc21e into master Nov 16, 2021
@elprans elprans deleted the improve-exmany-data-errors branch November 16, 2021 15:32
elprans added a commit that referenced this pull request Nov 16, 2021
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)
@elprans elprans mentioned this pull request Nov 16, 2021
elprans added a commit that referenced this pull request Nov 16, 2021
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)
elprans added a commit that referenced this pull request Nov 16, 2021
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

I get a cryptic KeyError when I tryto use asyncpg's executemany method
2 participants