the point in using iterselect() is that you have a SINGLE shot at iterating 
the results: speed comes from using the results returned as an iterator vs 
returning the big fat list. An iterator is inherently not reusable.

tl;dr: if select() and iterselect() matched in functionality, why should we 
have created iterselect() for ? :D

On Thursday, August 4, 2016 at 3:18:13 PM UTC+2, 黄祥 wrote:
>
> trying to change select() with iterselect() on all of my code, some work 
> and some not work. 
> in select() can check if len(rows_2) > 0: on the other side iterselect() 
> if rows_2:
> *error traceback*
>
> Traceback (most recent call last):
>   File "/Users/MacBookPro/site/web2py/gluon/restricted.py", line 227, in 
> restricted
>     exec ccode in environment
>   File 
> "/Users/MacBookPro/site/web2py/applications/mutualfunds/views/report/report_currency.html",
>  line 109, in <module>
>   File "/Users/MacBookPro/site/web2py/gluon/packages/dal/pydal/objects.py", 
> line 2761, in __iter__
>     row = next(self)
>   File "/Users/MacBookPro/site/web2py/gluon/packages/dal/pydal/objects.py", 
> line 2739, in __next__
>     db_row = self.cursor.fetchone()
> ProgrammingError: Cannot operate on a closed cursor.
>
>
> *the code in file generated around line 109 is marked bold red color  :*
>
> for row_pie in rows_2:
>         response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write("\r\n             
>        ['", escape=False)
>         response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write(T 
> <http://127.0.0.1:8000/examples/global/vars/T>(row_pie.product.name))
>         response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write("', ", 
> escape=False)
>         response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write(row_pie.subscription_amount)
>         response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write(' ],\r\n          
>       ', escape=False)
>         pass
>     response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write("\r\n             
>    ]\r\n            }],\r\n            title: {\r\n                text: '", 
> escape=False)
>     response <http://127.0.0.1:8000/examples/global/vars/response>.write(T 
> <http://127.0.0.1:8000/examples/global/vars/T>('Subscription'))
>     response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write('\'\r\n           
>  },\r\n            tooltip: {\r\n                pointFormat: \'<span 
> style="color:{point.color}">{series.name} : <b>Rp. {point.y:,.2f} 
> ({point.percentage:.1f} %)</b><br/>\'\r\n            }\r\n        });\r\n     
>    \r\n        // pie balance\r\n        $(\'#pie_balance\').highcharts({\r\n 
>            credits: {\r\n                enabled: false\r\n            },\r\n 
>            plotOptions: {\r\n                pie: {\r\n                    
> allowPointSelect: true,\r\n                    cursor: \'pointer\',\r\n       
>              dataLabels: {\r\n                        enabled: true, \r\n     
>                    format: \'<b>{point.name}</b> :<br />Rp. {point.y:,.2f}<br 
> />{point.percentage:.1f} %\'\r\n                    },\r\n                    
> showInLegend: true\r\n                }\r\n            },\r\n            
> series: [{\r\n                type: \'pie\',\r\n                name: \'', 
> escape=False)
>     response <http://127.0.0.1:8000/examples/global/vars/response>.write(T 
> <http://127.0.0.1:8000/examples/global/vars/T>('Balance'))
>     response <http://127.0.0.1:8000/examples/global/vars/response>.write(" 
> ',\r\n                data: [\r\n                ", escape=False)
>     
> *for row_pie in rows_2:        *response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write("\r\n             
>        ['", escape=False)
>         response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write(T 
> <http://127.0.0.1:8000/examples/global/vars/T>(row_pie.product.name))
>         response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write("', ", 
> escape=False)
>         response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write(row_pie.balance)
>         response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write(' ],\r\n          
>       ', escape=False)
>         pass
>     response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write("\r\n             
>    ]\r\n            }],\r\n            title: {\r\n                text: '", 
> escape=False)
>     response <http://127.0.0.1:8000/examples/global/vars/response>.write(T 
> <http://127.0.0.1:8000/examples/global/vars/T>('Balance'))
>     response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write('\'\r\n           
>  },\r\n            tooltip: {\r\n                pointFormat: \'<span 
> style="color:{point.color}">{series.name} : <b>Rp. {point.y:,.2f} 
> ({point.percentage:.1f} %)</b><br/>\'\r\n            }\r\n        
> });\r\n\t\t\r\n        // pie profit_loss_value\r\n        
> $(\'#pie_profit_loss_value\').highcharts({\r\n            credits: {\r\n      
>           enabled: false\r\n            },\r\n            plotOptions: {\r\n  
>               pie: {\r\n                    allowPointSelect: true,\r\n       
>              cursor: \'pointer\',\r\n                    dataLabels: {\r\n    
>                     enabled: true, \r\n                        format: 
> \'<b>{point.name}</b> :<br />Rp. {point.y:,.2f}<br />{point.percentage:.1f} 
> %\'\r\n                    },\r\n                    showInLegend: true\r\n   
>              }\r\n            },\r\n            series: [{\r\n                
> type: \'pie\',\r\n                name: \'', escape=False)
>     response <http://127.0.0.1:8000/examples/global/vars/response>.write(T 
> <http://127.0.0.1:8000/examples/global/vars/T>('Profit/Loss'))
>     response <http://127.0.0.1:8000/examples/global/vars/response>.write(" 
> ',\r\n                data: [\r\n                ", escape=False)
>     for row_pie in rows_2:
>         profit_loss_value = row_pie.balance - row_pie.subscription_amount
>         if profit_loss_value > 0:
>             response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write("\r\n             
>        ['", escape=False)
>             response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write(T 
> <http://127.0.0.1:8000/examples/global/vars/T>(row_pie.product.name))
>             response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write("', ", 
> escape=False)
>             response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write(profit_loss_value)
>             response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write(' ],\r\n          
>       ', escape=False)
>             pass
>         response 
> <http://127.0.0.1:8000/examples/global/vars/response>.write('\r\n             
>    ', escape=False)
>         pass
>
>
> is it normal or did i missed something?
>
> thanks and best regards,
> stifan
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to