PyGreSQL icon indicating copy to clipboard operation
PyGreSQL copied to clipboard

Proper way of specifying the schema along with the table

Open Cito opened this issue 3 years ago • 0 comments

See earlier discussions in #47 and #61.

Several methods of PyGreSQL, such as copy_*() or inserttable(), expect table names as parameters, and these are escaped internally.

This causes a problem when we want to specify a schema name together with the table name, like public.table, because the dot will be escaped as well. As a pragmatic solution, we now split a dotted table name and escape the parts individually. However, this only works as long as we have no tables that actually contain a dot.

For a proper solution, we could allow passing a tuple of (namespace, table) or (table,) or (db,namespace,table) instead of a string, and then escape the strings in these tuples individually before joining them. This should be handled consistently in all of the methods.

Alternatively, take a kwarg which would indicate that the table is already quoted (and might contain schema), or add separate parameters for schema and database.

Cito avatar Jan 30 '22 12:01 Cito