首页 > 解决方案 > 如何在 SQLAlchemy + Postgres 中将具有空数组的数组列设置为默认值

问题描述

我想列出sources一条信息。one to many我没有使用关系创建另一个表,而是使用该Array类型。

我试过:

app = Flask(__name__)
db = SQLAlchemy(app)

...

class Edge(db.Model):

    sources = db.Column(
        db.ARRAY(db.String),
        default=db.ARRAY(db.String)
    )

但是添加一个edge给我这个错误:

ProgrammingError: (psycopg2.ProgrammingError) 无法适应类型'ARRAY' [SQL: 'INSERT INTO edges (child_id, parent_id, sources) VALUES (%(child_id)s, %(parent_id)s, %(sources)s'] [参数:{'child_id':20,'parent_id':26,'sources':ARRAY(String())}]

我找不到关于如何使用array具有默认空数组的列的好教程。

谢谢

标签: pythonpostgresqlsqlalchemy

解决方案


我最终在这里的评论中找到了答案:

sources = db.Column(
    db.ARRAY(db.String),
    server_default="{}"
)

推荐阅读