Now we ruled out web2py completely in this. You need a MySQL expert.

On Tuesday, 26 February 2013 06:14:35 UTC-6, __pyslan__ wrote:
>
> The result is the same error...
>
> I get the result as (1), but the error is always thrown.
>
>
>
>
> On Tue, Feb 26, 2013 at 2:25 AM, Massimo Di Pierro 
> <massimo....@gmail.com<javascript:>
> > wrote:
>
>> Try:
>>
>> import MySQLdb
>> conn.MySQLdb.connect(db=db,
>>                            user=user,
>>                            passwd=passwd,
>>                            host=host,
>>                            port=port,
>>                    charset=charset)
>> curr = conn.cursor()
>> curr.execute('CALL sp_recursive_start(1);')
>> print curr.fetchall() # (1)
>> conn.rollback()
>>
>> (1) Try with and without this line.
>>
>> On Monday, 25 February 2013 12:06:09 UTC-6, __pyslan__ wrote:
>>
>>> 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 <nip...@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/<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/**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+un...@googlegroups.com <javascript:>.
>> 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.


Reply via email to