2012-06-25 44 views
2

我正在考慮將應用程序從php/MySQL轉換爲web2py(以及MySQL或Postgres)。這個應用程序的PHP代碼庫中唯一的SQL代碼是對存儲過程的調用...在PHP代碼庫中沒有SELECT,沒有INSERT等。 php代碼庫中的所有SQL源都是「CALL proc_Fubar(args ...);」存儲過程在web2py

如何告訴web2py,「這是我的INSERT存儲過程;這是我的SELECT ...」?我知道我可以執行sql,但是如何從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)