"AttributeError: 'NoneType' object has no attribute 'decode'" when executing empty script

Abierto
#1,259 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
postgresql, python
Área
databases

Línea de trabajo

Empieza por asyncpg/connection.py en Connection.execute y sigue la ruta de consulta del protocolo mostrada en asyncpg/protocol/protocol.pyx, especialmente _on_result__simple_query. Reproduce la consulta que solo contiene un comentario y, después, añade o actualiza la cobertura para que se complete correctamente sin el error de decodificación de NoneType y conserve los resultados normales para las consultas no vacías.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Wouldn't it be natural that executing a script with only comments is a no-op returning OK?
Such that for example commenting out the contents of a migration script while developing runs the script as a no-op.

Instead what happens when running this:

import os
import asyncpg
import asyncio

async def main():
    conn = await asyncpg.connect(os.environ["DATABASE_URI"])
    async with conn.transaction():
        await conn.execute("-- hello")

if __name__ == "__main__":
    asyncio.run(main())

Is this:

Traceback (most recent call last):
  File "/home/msa/dev/sandbox/pgtesting/hello.py", line 13, in <module>
    asyncio.run(main())
    ~~~~~~~~~~~^^^^^^^^
  File "/home/msa/.local/share/uv/python/cpython-3.13.0-linux-x86_64-gnu/lib/python3.13/asyncio/runners.py", line 194, in run
    return runner.run(main)
           ~~~~~~~~~~^^^^^^
  File "/home/msa/.local/share/uv/python/cpython-3.13.0-linux-x86_64-gnu/lib/python3.13/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
  File "/home/msa/.local/share/uv/python/cpython-3.13.0-linux-x86_64-gnu/lib/python3.13/asyncio/base_events.py", line 721, in run_until_complete
    return future.result()
           ~~~~~~~~~~~~~^^
  File "/home/msa/dev/sandbox/pgtesting/hello.py", line 9, in main
    await conn.execute("-- hello")
  File "/home/msa/dev/sandbox/pgtesting/.venv/lib/python3.13/site-packages/asyncpg/connection.py", line 349, in execute
    result = await self._protocol.query(query, timeout)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "asyncpg/protocol/protocol.pyx", line 375, in query
  File "asyncpg/protocol/protocol.pyx", line 888, in asyncpg.protocol.protocol.BaseProtocol._dispatch_result
  File "asyncpg/protocol/protocol.pyx", line 815, in asyncpg.protocol.protocol.BaseProtocol._on_result__simple_query
AttributeError: 'NoneType' object has no attribute 'decode'

Setup is just

mkdir hello
cd hello
uv init .
uv add asyncpg
export DATABUTTON_URI="something"
uv run hello.py # above example
Lenguaje dominante
Python
Estrellas
8.1k
Forks
469
Merge medio
4 h 42 min
PR fusionados (30 d)
6

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de MagicStack/asyncpg

Todos los issues de MagicStack/asyncpg

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.