Обсуждение: Restriction on comments

Поиск
Список
Период
Сортировка

Restriction on comments

От
PG Doc comments form
Дата:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/15/sql-comment.html
Description:

I've recently been converting some DML which was intended for BigQuery to
use PostgreSQL 14.  Using a python client (using sqlalchemy and the
postgresql+psycopg2 driver), I had successfully created a table and was
trying to add comments to the columns.  All of this was previously done in a
single statement on BigQuery, but requires separate CREATE TABLE and COMMENT
ON COLUMN statements for PostgreSQL.

For one of the comment statements I received this error: "dict is not a
sequence".  It turns out the culprit was that one of the comments had a '%'
character.  I'm not familiar with restrictions on strings in PostgreSQL, but
it would be helpful to have a list of these.

Re: Restriction on comments

От
Daniele Varrazzo
Дата:
On Fri, 21 Oct 2022 at 09:23, PG Doc comments form
<noreply@postgresql.org> wrote:
>
> The following documentation comment has been logged on the website:
>
> Page: https://www.postgresql.org/docs/15/sql-comment.html
> Description:
>
> I've recently been converting some DML which was intended for BigQuery to
> use PostgreSQL 14.  Using a python client (using sqlalchemy and the
> postgresql+psycopg2 driver), I had successfully created a table and was
> trying to add comments to the columns.  All of this was previously done in a
> single statement on BigQuery, but requires separate CREATE TABLE and COMMENT
> ON COLUMN statements for PostgreSQL.
>
> For one of the comment statements I received this error: "dict is not a
> sequence".  It turns out the culprit was that one of the comments had a '%'
> character.  I'm not familiar with restrictions on strings in PostgreSQL, but
> it would be helpful to have a list of these.

This is likely not coming from PostgreSQL. Psycopg uses `%s` as a
placeholder. As a consequence, if you want to pass a literal `%`, you
have to escape it at `%%`.

See documentation at
https://www.psycopg.org/docs/usage.html#passing-parameters-to-sql-queries

-- Daniele