Я хочу перечислить 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 ребра (child_id, parent_id, sources) VALUES (% (child_id) s,% (parent_id) s,% (sources) s'] [параметры: {'child_id': 20, 'parent_id': 26, 'sources': ARRAY (String ())}]

Я не могу найти хорошее руководство по использованию столбца array по умолчанию пустой массив.

Спасибо

3
ted 22 Окт 2018 в 11:48

2 ответа

Лучший ответ

В конце концов я нашел ответ в комментариях здесь:

sources = db.Column(
    db.ARRAY(db.String),
    server_default="{}"
)
1
ted 22 Окт 2018 в 09:16

Вызываемый Python также может быть установлен в качестве значения по умолчанию:

sources = db.Column(
    db.ARRAY(db.String),
    default=dict
)
0
hjpotter92 12 Дек 2019 в 11:56
52925453