2

我正在考虑将应用程序从 php/MySQL 转换为 web2py(以及 MySQL 或 Postgres)。此应用程序的 php 代码库中唯一的 SQL 代码是对存储过程的调用...在 php 代码库中没有 SELECT、没有 INSERT 等。php 代码库中的所有 SQL 源代码的顺序为“CALL proc_Fubar(args...);”

我如何告诉 web2py,“这是我的 INSERT 存储过程;这是我的 SELECT ...”?我知道我可以执行 sql,但是从 SELECT 中返回的行集怎么样...我希望返回该数据,就好像它是来自表的 web2py 查询的结果一样。

是的,我知道。我试图获得 web2py 所做的所有整洁的东西,而不是跟上我的讨价还价(通过将我的 SQL 定义为 web2py 想要看到它)。

4

1 回答 1

2

您可以尝试以下方法。首先,定义一个与存储过程返回的字段匹配的模型(设置 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)
于 2012-06-27T01:09:48.050 回答