Skip to content

Custom Type Conversions issues #148

Closed
@madisvain

Description

@madisvain
  • asyncpg version: 0.11
  • PostgreSQL version: 9.5.4_1
  • Python version: 3.6
  • Platform: Sanic
  • Do you use pgbouncer?: No
  • Did you install asyncpg with pip?: yes

Trying to overwrite the type conversion:

await connection.set_builtin_type_codec(typename='uuid', schema='pg_catalog', codec_name='char')
ValueError
cannot override codec for type 2950

Traceback (most recent call last):
File /Users/konstruktor/Documents/development/sparkline/env/lib/python3.6/site-packages/sanic/app.py, line 471, in handle_request
response = await response
File /usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/coroutines.py, line 109, in __next__
return self.gen.send(None)
File app.py, line 79, in results
await connection.set_builtin_type_codec(typename='uuid', schema='pg_catalog', codec_name='char')
File /usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/coroutines.py, line 109, in __next__
return self.gen.send(None)
File /Users/konstruktor/Documents/development/sparkline/env/lib/python3.6/site-packages/asyncpg/connection.py, line 806, in set_builtin_type_codec
oid, typename, schema, 'scalar', codec_name)
File asyncpg/protocol/settings.pyx, line 40, in asyncpg.protocol.protocol.ConnectionSettings.set_builtin_type_codec (asyncpg/protocol/protocol.c:5512)
File asyncpg/protocol/settings.pyx, line 42, in asyncpg.protocol.protocol.ConnectionSettings.set_builtin_type_codec (asyncpg/protocol/protocol.c:5390)
File asyncpg/protocol/codecs/base.pyx, line 526, in asyncpg.protocol.protocol.DataCodecConfig.set_builtin_type_codec (asyncpg/protocol/protocol.c:19818)
File asyncpg/protocol/codecs/base.pyx, line 501, in asyncpg.protocol.protocol.DataCodecConfig._set_builtin_type_codec (asyncpg/protocol/protocol.c:19271)

If I use a custom python encoder decoder with uuid type - they are never called.

def uuid_encoder(value):
    return str(1)

def uuid_decoder(value):
    return str(1)

async with app.pool.acquire() as connection:
    #await connection.set_builtin_type_codec(typename='uuid', schema='pg_catalog', codec_name='char')
    await connection.set_type_codec(
        typename='uuid',
        encoder=uuid_encoder,
        decoder=uuid_decoder,
        schema='pg_catalog'
    )
    results = await connection.fetch('SELECT * FROM checks')

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions