动态插入行到 table flask sqlalchemy

dynamically insert rows to table flask sqlalchemy

我想在 SQLAlchemy 中动态地向 sql table 插入新行。

我基本上想做 ,但我不想用更新来做,而是想用插入来做。

我正在使用 Flask 和 WTForms。

现在,我必须添加一个新用户来执行此操作:

if form.validate_on_submit():
    contact_info = UserContactInfo(street_number=form.street_number.data,
                                   street_address = form.street_address.data,
                                   unit_number = form.unit_number.data
                                  )
    db.session.add(contact_info)
    db.session.commit()

如果我可以遍历插入,我将能够更轻松地向 UserContactInfo 添加新属性。

我试过这样做,但没有对数据库进行任何更改。

form = ContactInfoForm()
contact_info = UserContactInfo()

if form.validate_on_submit():
    table_obj_members = get_attributes(UserContactInfo())
        for aa in table_obj_members:
             form_data = getattr(form, aa).data
             setattr(contact_info, aa, form_data)

 db.session.commit()

我已经看到一些关于此的讨论并实例化了整个 Class 而不是对象属性,但我似乎无法将其应用于此问题。

感谢您的帮助。

在您的第二个示例中,您忘记在提交之前将修改后的对象添加到会话中。
WTForms 中有一个函数完全符合您的描述:populate_obj() [1].

示例:

if form.validate_on_submit():
    contact_info = UserContactInfo()
    form.populate_obj(contact_info)

    db.session.add(contact_info)
    db.session.commit()