2016-06-14 8 views
0

SQL 문을 수행해야하는 클래스에서 create 함수를 호출하려고합니다. 해당 쿼리에서 일부 매개 변수를 전달해야하며이를 수행하는 방법을 모르겠습니다.PGSQL 쿼리에서 매개 변수 전달

roster_substitute 클래스

def create(self, cr, uid, values, context=None): 
     rec_id=values['id'] 
     sub_day=values['roster_day'] 
     ros_time=values['time_slot'] 

    cr.execute("""UPDATE roster_days_allocation SET roster_allocation_connection = (SELECT MAX(ra.id) FROM roster_allocation ra, roster_substitution rs 
          WHERE ra.emp_id=rs.sub_employee) 
         WHERE allocation_start_day = **'sub_day'** AND roster_time_list = **ros_time**""") 

return super(roster_substitution, self).create(cr, uid, values, context=context) 
+0

정보 만 있으면 : odoo의 orm 계층을 피하는 쿼리와 함께 액세스 권한 확인과 같은 모든 작업을 수행 할 수 있습니다. – CZoellner

+0

나를 안내해 주셔서 고맙습니다 만, 말하는 ... 당신은 조금 더 설명 할 수 있었다 ??? –

+0

om은 읽기, 쓰기, 생성, 검색 등과 같은 전형적인 모델 방법을 사용하여 orm 계층을 사용할 때 odoo는 액세스 권한/규칙과 제약을 검사합니다. 직접 실행 된 쿼리를 사용하면 아무 것도 할 수 없습니다 (물론 SQL 제한 제외). 따라서 SQL 쿼리를주의해서 사용해야하며 외부에서 일부 SQL 코드를 삽입 할 가능성이없는 경우 절대 사용하지 마십시오. – CZoellner

답변

1

의 생성 기능이 표준 psycopg2 라이브러리를 사용하는 경우 다음

cr.execute("""UPDATE roster_days_allocation SET roster_allocation_connection = (SELECT MAX(ra.id) FROM roster_allocation ra, roster_substitution rs 
          WHERE ra.emp_id=rs.sub_employee) 
       WHERE allocation_start_day = %s AND roster_time_list = %s""", (sub_day, ros_time)) 

psycopg2 documentation를 참조하십시오.

+0

정말 고마워요 .... –