Flask SqlAlchemy:插入使用序列的模型对象
我的模型定义如下。请注意,ID列使用服务器端序列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
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中设置自定义构造函数。我非常感谢所有的答案。