asyncpg icon indicating copy to clipboard operation
asyncpg copied to clipboard

Compatibility Issue with asyncpg 0.30.0 in Gino 1.0.1

Open eamial-pub opened this issue 1 year ago • 0 comments

  • asyncpg version: 0.30.0
  • PostgreSQL version: 16.1
  • Do you use a PostgreSQL SaaS? If so, which? Can you reproduce the issue with a local PostgreSQL install?: No
  • Python version: 3.13
  • Platform: MacOS
  • Do you use pgbouncer?: No
  • Did you install asyncpg with pip?: Yes
  • If you built asyncpg locally, which version of Cython did you use?:
  • Can the issue be reproduced under both asyncio and uvloop?: Yes

Hi there! I am using gino 1.0.1 and unfortunately, this project is no longer being updated. For migrating to Python 3.13 I install asyncpg 0.30.0 and found, that gino (await Model.insert().gino.all([{...}, {...}])] can't work with current version. Issue occurs when calling bind_execute_many Gino expects 4 arguments, but in version 0.30.0, a new argument return_rows was added.

How to gino using asyncpg:

def executor(state, timeout_):
    if many:
        return _protocol.bind_execute_many(state, args, "", timeout_)
    else:
         return _protocol.bind_execute(state, args, "", limit, True, timeout_)

My suggestion: add True as the default value for the return_rows argument:

    async def bind_execute_many(
        self,
        state: PreparedStatementState,
        args,
        portal_name: str,
        timeout,
        return_rows: bool = True,
    )

eamial-pub avatar Oct 31 '24 10:10 eamial-pub