Flask SqlAlchemy:插入使用序列的模型对象

Flask SqlAlchemy:插入使用序列的模型对象,flask,sqlalchemy,flask-sqlalchemy,Flask,Sqlalchemy,Flask Sqlalchemy,我的模型定义如下。请注意,ID列使用服务器端序列 class AgreementT(Base): __tablename__ = 'agreement_t' __table_args__ = {'schema': 'ets'} id = Column(Integer, primary_key=True, server_default=text("nextval('ets.agreement_t_id_seq'::regclass)")) ag

我的模型定义如下。请注意,ID列使用服务器端序列

class AgreementT(Base):
    __tablename__ = 'agreement_t'
    __table_args__ = {'schema': 'ets'}

    id = Column(Integer, primary_key=True, server_default=text("nextval('ets.agreement_t_id_seq'::regclass)"))
    agreement_number = Column(Numeric)
    year = Column(Numeric(4, 0), nullable=False)
    ...
当我想使用Flask SqlAlchemy插入记录时,首先需要填写我的模型对象。但是我如何指定ID列应该是默认的指定序列呢

@bp.route('submitAgreementForm', methods=['POST'])
def insertAgreementForm():
    req_json = request.get_json()
    form = req_json['form_values']

    # Prepare model object
    agreement = AgreementT(None, 'field1', 'field2', ...) # is 'None' correct for ID column?

此外,在
Agreement.py
中定义的模型没有默认构造函数。可以吗?

您应该能够不传递
id的任何内容,因为SQLA知道服务器将提供一个值。所以
AgreementT(field1='foo',field2='bar',…)
,而不是
AgreementT(id=42,field1='foo',field2='bar',…)
。没有构造函数是可以的。默认情况下,SQLA调用以分配关键字参数。如果您不喜欢默认的行为,我将演示如何在flask sqlalchemy中设置自定义构造函数。我非常感谢所有的答案。