-
-
Notifications
You must be signed in to change notification settings - Fork 43
Table column names for SQL queries with JOINS #23
Description
Hello,
In the ColumnDescription returned inside the cursor.description, it feels like there is some useful metadata missing.
Could we have the table from which the column is from ?
For instance, when doing :
cursor.execute("SELECT a.description AS foo, b.description AS bar FROM a LEFT JOIN b ON a.id=b.id")cursor.description contains the column names, but not their alias. In this case, it would return ['description', 'description'], when one could expect ['foo', 'bar'] so it is impossible to differentiate ambiguous columns, to assign them to the right elements in the result.
I think this method in __init__.py is the one which needs enhancement :
def _set_description(self, column_metadata):
# see https://www.postgresql.org/docs/9.5/datatype.html
self.description = []
for column in column_metadata:
col_desc = ColumnDescription(name=column["name"], type_code=self._pg_type_map.get(column["typeName"].lower(), str))
self.description.append(col_desc)The column_metadata should contain a tableName field, according to the boto3 docs, see the response syntax in here. Could it be added to the ColumnDescription object ?
Would it be possible to implement this feature ? Is there another way I am missing ?
Thanks in advance !