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

时间:2018-10-22 08:48:06

标签: python postgresql sqlalchemy

我想列出一条信息的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列的好的教程 空数组。

谢谢

2 个答案:

答案 0 :(得分:1)

我最终在评论here中找到了答案:

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

答案 1 :(得分:0)

也可以将python可调用项设置为默认值:

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