Добавить столбец с psycopg2 не распознает тип - PullRequest
1 голос
/ 13 января 2020

Я хочу добавить столбец с psycopg2, но я сталкиваюсь с ошибкой, которая говорит, что он не может распознать тип. Что я делаю не так?

Это код:

alter_query_for_attributes =
            """
            ALTER TABLE {schema}.{table}
            ADD COLUMN IF NOT EXISTS {sat_attributes} {sat_value};
            """
final_query_attributes = sql.SQL(alter_query_for_attributes).format(
                                                            schema = sql.Identifier("testSchema"),
                                                            table = sql.Identifier("address"),
                                                            sat_attributes=sql.Identifier(sat[0]),
                                                            sat_value=sql.Identifier(sat[1])
                                                            )
ALTER TABLE "testSchema"."address"
ADD COLUMN IF NOT EXISTS "address_line_1" "varchar(250)";

Это дает мне ошибку:

psycopg2.errors.UndefinedObject: type "varchar(250)" does not exist
LINE 12: ...        ADD COLUMN IF NOT EXISTS "address_line_1" "varchar(2...
                                                          ^

1 Ответ

0 голосов
/ 14 января 2020

"varchar(250)" трактуется как точное имя типа данных, и тип с именем "varchar(250)" не существует. Если вы хотите использовать двойные кавычки, то модификатор размера должен go вне кавычек, "varchar"(250). Или еще лучше, просто отбросьте кавычки, если вы знаете, что они не нужны. Ваш 'sat' кортеж, вероятно, должен иметь 3 поля: имя, тип и необязательный модификатор типа.

...