2013-10-08 6 views
2

안녕하세요, 저는 Flask Peewee를 사용 중이며 merchant_details 모델을 업데이트하려고하지만 작동하지 않습니다. 나는 오류가 점점 오전 다음과 같은 :Flask Peewee에서 업데이트 쿼리를 사용하는 방법?

AttributeError: 'SelectQuery' object has no attribute 'update'

mdetails = merchant_details.filter(merchant_details.merchant_id==session['userid']).update(
     merchant_name=request.form['merchantname'], 
      first_name=request.form['firstname'], 
      last_name=request.form['lastname'], 
     ) 

제발 도와주세요!

답변

9

먼저 2.0 이전 구문을 사용하고있는 것 같습니다 (filter 메서드는 현재 사용되지 않습니다). 최신 버전에 대한 정보는 docs을 참조하시기 바랍니다.

일반적으로 "쿼리를 업데이트하지 않습니다." 이를 수행하는 두 가지 주요 방법은 다음과 같습니다.

1. 쿼리를 사용하여 개체를 검색 한 다음 save() 메서드를 사용하여 개체를 업데이트합니다. 예를 들어 ...

mdetails = MerchantDetails.select().where(MerchantDetails.id == 42).get() 
mdetails.name = 'new name' 
mdetails.save() # Will do the SQL update query. 

2.), 본질적으로는 SQL UPDATE 문 ...

q = MerchantDetails.update(MerchantDetails.name='new name') 
    .where(MerchantDetails.id == 42) 
q.execute() # Will do the SQL update query. 

이 두 가지 모두를 사용하여 같은 일을 수행. 첫 x 째는 데이터베이스에 두 개의 u 리를 작성합니다 (하나는 레코드를 선택하고 다른 하나는 레코드를 UPDATE). 두 x 째는 하나의 SQL 호출 만 사용합니다 (레코드를 UPDATE).

2

내가 솔루션을 가지고

mdetails = merchant_details.update(
      merchant_name=request.form['merchantname'], 
      first_name=request.form['firstname'], 
      last_name=request.form['lastname'], 
      street_1=request.form['street1'], 
      street_2=request.form['street2'], 
      state=request.form['state'], 
      city=request.form['city'], 
      phone=request.form['phone'], 
      zipcode=request.form['zip'], 
     ).where(merchant_details.merchant_id==session['userid']) 
     mdetails.execute() 

어쨌든 감사합니다 마크