2012-06-25 7 views
2

PHP/MySQL에서 web2py (및 MySQL 또는 Postgres)로 응용 프로그램을 변환하는 것을 고려하고 있습니다. 이 응용 프로그램의 PHP 코드베이스에있는 유일한 SQL 코드는 PHP 코드베이스에 SELECT, INSERT 등이없는 저장 프로 시저에 대한 호출입니다. PHP 코드베이스의 모든 SQL 소스는 "CALL proc_Fubar (args ...);"web2py의 저장 프로 시저

web2py에 "내 INSERT 저장 프로 시저는 여기 있는데, 내 SELECT ..."라고 어떻게 말합니까? executeql 수 있지만 SELECT에서 반환 된 행 집합 방법에 대해 ... 나는 그것이 테이블에서 web2py 쿼리의 결과 것처럼 반환 된 데이터를 갖고 싶습니다.

예, 알고 있습니다. 나는 web2py가 나의 협상을 끝내지 않고 (web2py가 그것을보고 싶어하는 것처럼 내 SQL을 정의함으로써) 모든 깔끔한 것들을 얻으려고 노력하고있다.

답변

2

다음을 시도해보십시오. 먼저 저장 프로 시저가 반환 한 필드와 일치하는 모델을 정의합니다 (migrate = False로 설정하면 web2py가 db에서 해당 테이블을 만들지 않습니다).

db.define_table('myfaketable', ..., migrate=False) 

는 다음을 수행하십시오

raw_rows = db.executesql('[SQL code to execute stored procedure]') 
rows = db._adapter.parse(raw_rows, 
    fields=[field for field in db.myfaketable], 
    colnames=db.myfaketable.fields)