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.

