Fedora 29 / pgadmin4.3 Bug: ‘psycopg2.extensions.Column’ object has no attribute ‘_asdict’

There’s a bit of a lag in the Fedora RPMs from PostgreSQL’s repositories, so I thought I’d post this up in case anyone else out there runs into the error message in the subject of this post.

To fix it quickly (until the RPMs are updated), simply patch a single file (/usr/lib/python3.7/site-packages/pgadmin4-web/pgadmin/utils/driver/psycopg2/cursor.py) as follows:

1.  Right after the following lines (lines 18-19 in the file):

except ImportError:
    from ordereddict import OrderedDict

Add:

import psycopg2

2.  Replace the line (originally line 91 in the file):

        ores = OrderedDict(self.orig_col._asdict())
With:

        if psycopg2.__version__.find('2.8') != -1:
            ores = OrderedDict()
            ores['name'] = self.orig_col.name
            ores['type_code'] = self.orig_col.type_code
            ores['display_size'] = self.orig_col.display_size
            ores['internal_size'] = self.orig_col.internal_size
            ores['precision'] = self.orig_col.precision
            ores['scale'] = self.orig_col.scale
            ores['null_ok'] = self.orig_col.null_ok
            ores['table_oid'] = self.orig_col.table_oid
            ores['table_column'] = self.orig_col.table_column
       else:
            ores = OrderedDict(self.orig_col._asdict())

That’s it!  Careful about the line spacing; it’s python, so it’s quite sensitive to it.  If you use vim or some other python-aware editor, it should flag any incorrect spacing in your edits.

This entry was posted in Information Technology and tagged , , . Bookmark the permalink.

Leave a comment