我正在考虑将应用程序从 php/MySQL 转换为 web2py(以及 MySQL 或 Postgres)。此应用程序的 php 代码库中唯一的 SQL 代码是对存储过程的调用...php 代码库中没有 SELECT、没有 INSERT 等。 php 代码库中的所有 SQL 源代码都是“CALL proc_Fubar(args...);”的顺序
我如何告诉 web2py,“这是我的 INSERT 存储过程;这是我的 SELECT...”?我知道我可以执行sql,但是从 SELECT 返回的行集怎么样...我希望返回该数据,就好像它是来自表的 web2py 查询的结果一样。
是的,我知道。我试图获得 web2py 所做的所有巧妙的事情,但又不遵守我的协议(protocol)(通过将我的 SQL 定义为 web2py 想要看到的)。
最佳答案
您可以尝试以下操作。首先,定义一个与存储过程返回的字段相匹配的模型(设置 migrate=False 以便 web2py 不会尝试在数据库中创建该表)。
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)
关于stored-procedures - web2py 中的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11194870/