2017-11-27 3 views
1

SQLAlchemy에서 동적으로 sql 테이블에 새 행을 삽입하려고합니다.행을 테이블 플라스크에 동적으로 삽입하십시오. sqlalchemy

기본적으로 this을 원하지만 UPDATE 대신 INSERT를 사용하고 싶습니다.

저는 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() 

나는이 주위에 몇 토론을 볼 전체 클래스가 아닌 객체의 속성을 인스턴스화,하지만 난이이 문제에 적용 할 수없는 것있다.

도움 주셔서 감사합니다.

답변

1

커밋하기 전에 수정 된 개체를 세션에 추가하는 것을 잊었습니다.
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() 
+0

감사합니다. 그것은 편리한 기능입니다. 참고 내가 채우기 전에 데이터베이스 개체에 foreign_key 및 value를 추가해야했습니다. 'contact_info = UserContactInfo (id = user_id)' –

관련 문제