2012-06-25 5 views
2

Я рассматриваю возможность преобразования приложения из php/MySQL в web2py (и MySQL или Postgres). Единственным кодом SQL в базе php для этого приложения являются вызовы хранимых процедур ... без SELECT, без INSERT и т. Д. В php codebase. Весь источник SQL в кодовой базе php находится в порядке «CALL proc_Fubar (args ...);»хранимые процедуры в web2py

Как сообщить web2py: «Вот моя хранимая процедура INSERT, вот мой SELECT ...»? Я знаю, что могу выполнить executesql, но как насчет возвращаемого набора строк из SELECT ... Я хотел бы вернуть эти данные, как если бы это был результат запроса web2py из таблицы.

Да, я знаю. Я пытаюсь получить все аккуратные вещи, которые делает web2py, не дожив до конца сделки (определяя мой SQL, поскольку web2py хочет его увидеть).

ответ

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) 
Смежные вопросы