动态插入行到 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()
我想在 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()