繁体   English   中英

如何在 SQLAlchemy + Postgres 中将带有空数组的数组列设置为默认值

[英]How to set an Array column with an empty array as default in 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 edge (child_id, parent_id, sources) VALUES (%(child_id)s, %(parent_id)s, %(sources)s'] [参数:{'child_id':20,'parent_id':26,'sources':ARRAY(String())}]

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

谢谢

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

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

也可以将 python callable 设置为默认值:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM