我想用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...
                                                          ^

最佳答案

"varchar(250)"被视为数据类型的确切名称,并且没有名为"varchar(250)"的类型。如果要使用双引号,则大小修饰符需要放在双引号"varchar"(250)之外。或者更好的是,如果您知道不需要引号,请删除引号。您的“ sat”元组可能应该包含3个字段,即名称,类型和可选的类型修饰符。

10-06 05:03
查看更多