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 に答える