I have not the faintest idea how to do that, and this feature is essential for the project. I can not build a recursive function due to performance. With great respect I ask, should I give up web2py in this case?
On Mon, Feb 25, 2013 at 2:28 PM, Niphlod <niph...@gmail.com> wrote: > well, I doubt that workbench uses a python dbapi. > From where I stand, you should try to make that work on the adapter (i.e. > without web2py) and see if there it works.... > > in my pov, mysql returns different resultsets for that kind of stored > proc: one is the result of the line inserted in a loop, and the other one > is the resultset that is fetched back from the temporary table. I'm no > dbapi expert but I'd say that this is not supported and has to be managed > on the adapter side. > > http://geert.vanderkelen.org/multiple-result-sets-in-mysql-connectorpython/ > > > On Monday, February 25, 2013 5:55:16 PM UTC+1, __pyslan__ wrote: > >> But when I make these calls in MySQL Workbench, the result is correct. >> >> Look the attached image, please... >> >> >> >> >> On Mon, Feb 25, 2013 at 1:24 PM, Massimo Di Pierro <massimo....@gmail.com >> > wrote: >> >>> The code below is equivalent to: >>> >>> sql> CALL sp_recursive_start(1); >>> sql> ROLLBACK; >>> >>> web2py is not adding anything to it. >>> This demonstrates that the problem is completely with the code in >>> "sp_recursive_start". >>> You are getting an OperationError from the database on rollback. >>> >>> My guess is that there is one of these two problems or both: >>> >>> 1) you cannot declare the same stored procedure at every request. You >>> should declare it once outside of web2py. >>> 2) you need to explicitly commit after you declare a stored procedure. >>> You cannot roll it back. >>> >>> Let us know if this helps. >>> >>> Massimo >>> >>> >>> On Monday, 25 February 2013 08:38:30 UTC-6, __pyslan__ wrote: >>> >>>> I got it: >>>> >>>> In [1]: fields = [db.auth_user.generation, db.auth_user.id, >>>> db.auth_user.first_name] >>>> >>>> In [2]: raw_rows = db.executesql('CALL sp_recursive_start(1);', >>>> fields=fields) >>>> >>>> In [3]: db.rollback() >>>> ------------------------------****------------------------------**** >>>> --------------- >>>> ProgrammingError Traceback (most recent call >>>> last) >>>> >>>> /home/ctx/PROJECTS/WEB/web2py/****applications/myapp/models/006_****menu.py >>>> in <module>() >>>> ----> 1 db.rollback() >>>> >>>> /home/ctx/PROJECTS/WEB/web2py/****gluon/dal.pyc in rollback(self) >>>> 7286 >>>> 7287 def rollback(self): >>>> -> 7288 self._adapter.rollback() >>>> 7289 >>>> 7290 def close(self): >>>> >>>> /home/ctx/PROJECTS/WEB/web2py/****gluon/dal.pyc in rollback(self) >>>> 1668 >>>> 1669 def rollback(self): >>>> -> 1670 if self.connection: return self.connection.rollback() >>>> 1671 >>>> 1672 def close_connection(self): >>>> >>>> ProgrammingError: (2014, "Commands out of sync; you can't run this >>>> command now") >>>> >>>> >>>> >>>> On Mon, Feb 25, 2013 at 11:24 AM, Massimo Di Pierro < >>>> massimo....@gmail.com> wrote: >>>> >>>>> This is a database issue more than a web2py issue but I am interested >>>>> to get to the bottom of it. >>>>> >>>>> Can you ty open a web2py shell >>>>> >>>>> $ python web2py.py -S yourapp -M >>>>> >>> fields = [db.auth_user.generation, db.auth_user.id, db.auth_user. >>>>> first_name] >>>>> >>>>> >>> raw_rows = db.executesql('CALL sp_recursive_start(1);', fields=fields) >>>>> >>>>> >>> db.rollback() >>>>> >>>>> What do you get? >>>>> >>>>> >>>>> >>>>> On Monday, 25 February 2013 07:39:24 UTC-6, __pyslan__ wrote: >>>>> >>>>>> No, Massimo, is not ... With or without the try... except... the >>>>>> error is the same ... I've tried this several times. >>>>>> >>>>>> The code of gist: >>>>>> https://gist.github.com/**pyslan****/5007364<https://gist.github.com/pyslan/5007364> >>>>>> (without >>>>>> try... except...) print it on the terminal server: >>>>>> >>>>>> <Row {'generation': 1, 'first_name': 'Root', 'id': 1}> >>>>>> <Row {'generation': 2, 'first_name': 'Teste', 'id': 2}> >>>>>> ERROR:web2py:Traceback (most recent call last): >>>>>> File "/home/ctx/PROJECTS/WEB/**web2py****/gluon/main.py", line >>>>>> 632, in wsgibase >>>>>> BaseAdapter.close_all_**instance****s('rollback') >>>>>> File "/home/ctx/PROJECTS/WEB/**web2py****/gluon/dal.py", line >>>>>> 543, in close_all_instances >>>>>> db._adapter.close(action) >>>>>> File "/home/ctx/PROJECTS/WEB/**web2py****/gluon/dal.py", line 523, >>>>>> in close >>>>>> getattr(self, action)() >>>>>> File "/home/ctx/PROJECTS/WEB/**web2py****/gluon/dal.py", line >>>>>> 1670, in rollback >>>>>> if self.connection: return self.connection.rollback() >>>>>> ProgrammingError: (2014, "Commands out of sync; you can't run this >>>>>> command now") >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Sat, Feb 23, 2013 at 5:58 PM, Massimo Di Pierro < >>>>>> massimo....@gmail.com> wrote: >>>>>> >>>>>>> This is causing the problem. What if you remove the try... except? >>>>>>> What ticket do you get? >>>>>>> >>>>>>> try: >>>>>>> >>>>>>> raw_rows = db.executesql('CALL sp_recursive_start(1);', >>>>>>> fields=fields) >>>>>>> >>>>>>> >>>>>>> except Exception, e: >>>>>>> print 'ERROR NOW:', e >>>>>>> >>>>>>> >>>>>>> db.rollback() >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Saturday, 23 February 2013 12:58:44 UTC-6, __pyslan__ wrote: >>>>>>>> >>>>>>>> After reading this >>>>>>>> thread<http://en.usenet.digipedia.org/thread/16137/52728/>, >>>>>>>> as Anthony suggested, I tried this: >>>>>>>> >>>>>>>> import MySQLdb >>>>>>>> from gluon.dal import MySQLAdapter >>>>>>>> MySQLAdapter.driver = MySQLdb >>>>>>>> >>>>>>>> After that, even commenting this block of code I get the result >>>>>>>> correctly because the print rows, but the error below is thrown anyway: >>>>>>>> >>>>>>>> Traceback (most recent call last): >>>>>>>> File "/media/sda3/pyslan/PROJECTS/**w******eb2py/gluon/main.py", >>>>>>>> line 632, in wsgibase >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> BaseAdapter.close_all_**instance******s('rollback') >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> File "/media/sda3/pyslan/PROJECTS/**w******eb2py/gluon/dal.py", line >>>>>>>> 543, in close_all_instances >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> db._adapter.close(action) >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> File "/media/sda3/pyslan/PROJECTS/**w******eb2py/gluon/dal.py", line >>>>>>>> 523, in close >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> getattr(self, action)() >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> File "/media/sda3/pyslan/PROJECTS/**w******eb2py/gluon/dal.py", line >>>>>>>> 1670, in rollback >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> if self.connection: return self.connection.rollback() >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> ProgrammingError: (2014, "Commands out of sync; you can't run this >>>>>>>> command now") >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> The code: >>>>>>>> https://gist.github.com/**pyslan******/5007364<https://gist.github.com/pyslan/5007364> >>>>>>>> >>>>>>>> Something related with this? >>>>>>>> https://groups.google.com/**foru******m/#!msg/web2py/**1s7vDix8QC8/ >>>>>>>> **mgv****ot4PEvBgJ<https://groups.google.com/forum/#!msg/web2py/1s7vDix8QC8/mgvot4PEvBgJ> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>> >>>>>>> --- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "web2py-users" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to web2py+un...@**googlegroups.com. >>>>>>> >>>>>>> For more options, visit https://groups.google.com/**grou**** >>>>>>> ps/opt_out <https://groups.google.com/groups/opt_out>. >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>> >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "web2py-users" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to web2py+un...@**googlegroups.com. >>>>> For more options, visit >>>>> https://groups.google.com/**grou**ps/opt_out<https://groups.google.com/groups/opt_out> >>>>> . >>>>> >>>>> >>>>> >>>> >>>> -- >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "web2py-users" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to web2py+un...@**googlegroups.com. >>> For more options, visit >>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>> . >>> >>> >>> >> >> -- > > --- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to web2py+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.