Mailing List Archive

Iteration over columns in ZSQLMethod result not working in Zope 2.12.13
Hi,

I stumbled over the following error using Zope 2.12.13. Bug ?

Given some ZSQLMethod, and either ZMySQLDA (3.1.1) or ZPsycopgDA
(2.0.14 or 2.2.2)
and the following python script:

result = context.someZSQLMethod()
for row in result:
for col in row: #this will fail
pass

I get an AttributeError: __iter__

Traceback (innermost last):
Module ZPublisher.Publish, line 127, in publish
Module ZPublisher.mapply, line 77, in mapply
Module ZPublisher.Publish, line 47, in call_object
Module Shared.DC.Scripts.Bindings, line 324, in __call__
Module Shared.DC.Scripts.Bindings, line 361, in _bindAndExec
Module Products.PythonScripts.PythonScript, line 344, in _exec
Module script, line 3, in someZSQLMethod
- <PythonScript at /testfolder/somePythonScript>
- Line 3
Module AccessControl.ZopeGuards, line 181, in next
Module AccessControl.ZopeGuards, line 211, in guard
Module AccessControl.SecurityManagement, line 21, in getSecurityManager
AttributeError: __iter__

- Andreas



_______________________________________________
Zope maillist - Zope@zope.org
https://mail.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
https://mail.zope.org/mailman/listinfo/zope-announce
https://mail.zope.org/mailman/listinfo/zope-dev )
Re: Iteration over columns in ZSQLMethod result not working in Zope 2.12.13 [ In reply to ]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 12/01/2010 08:27 AM, Andreas Elvers wrote:
> Hi,
>
> I stumbled over the following error using Zope 2.12.13. Bug ?
>
> Given some ZSQLMethod, and either ZMySQLDA (3.1.1) or ZPsycopgDA
> (2.0.14 or 2.2.2)
> and the following python script:
>
> result = context.someZSQLMethod()
> for row in result:
> for col in row: #this will fail
> pass
>
> I get an AttributeError: __iter__
>
> Traceback (innermost last):
> Module ZPublisher.Publish, line 127, in publish
> Module ZPublisher.mapply, line 77, in mapply
> Module ZPublisher.Publish, line 47, in call_object
> Module Shared.DC.Scripts.Bindings, line 324, in __call__
> Module Shared.DC.Scripts.Bindings, line 361, in _bindAndExec
> Module Products.PythonScripts.PythonScript, line 344, in _exec
> Module script, line 3, in someZSQLMethod
> - <PythonScript at /testfolder/somePythonScript>
> - Line 3
> Module AccessControl.ZopeGuards, line 181, in next
> Module AccessControl.ZopeGuards, line 211, in guard
> Module AccessControl.SecurityManagement, line 21, in getSecurityManager
> AttributeError: __iter__

I don't think the Record class fills the 'tp_iter' slot. Does the
following workaround help?

result = context.someZSQLMethod()
for row in result:
for i in range(len(row)):
col = row[i[



Tres.
- --
===================================================================
Tres Seaver +1 540-429-0999 tseaver@palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkz2UxAACgkQ+gerLs4ltQ79tgCgvTqC6Kgsk60n7kUuh95FYfMQ
Gd0An2al8dDlrfKvLT+VIJw3ODGacigo
=YFm1
-----END PGP SIGNATURE-----

_______________________________________________
Zope maillist - Zope@zope.org
https://mail.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
https://mail.zope.org/mailman/listinfo/zope-announce
https://mail.zope.org/mailman/listinfo/zope-dev )
Re: Iteration over columns in ZSQLMethod result not working in Zope 2.12.13 [ In reply to ]
Am 1.12.10 14:52 , schrieb Tres Seaver:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 12/01/2010 08:27 AM, Andreas Elvers wrote:
>> Hi,
>>
>> I stumbled over the following error using Zope 2.12.13. Bug ?
>>
>> Given some ZSQLMethod, and either ZMySQLDA (3.1.1) or ZPsycopgDA
>> (2.0.14 or 2.2.2)
>> and the following python script:
>>
>> result = context.someZSQLMethod()
>> for row in result:
>> for col in row: #this will fail
>> pass
>>
>> I get an AttributeError: __iter__
>>
>> Traceback (innermost last):
>> Module ZPublisher.Publish, line 127, in publish
>> Module ZPublisher.mapply, line 77, in mapply
>> Module ZPublisher.Publish, line 47, in call_object
>> Module Shared.DC.Scripts.Bindings, line 324, in __call__
>> Module Shared.DC.Scripts.Bindings, line 361, in _bindAndExec
>> Module Products.PythonScripts.PythonScript, line 344, in _exec
>> Module script, line 3, in someZSQLMethod
>> -<PythonScript at /testfolder/somePythonScript>
>> - Line 3
>> Module AccessControl.ZopeGuards, line 181, in next
>> Module AccessControl.ZopeGuards, line 211, in guard
>> Module AccessControl.SecurityManagement, line 21, in getSecurityManager
>> AttributeError: __iter__
>
> I don't think the Record class fills the 'tp_iter' slot. Does the
> following workaround help?
>
> result = context.someZSQLMethod()
> for row in result:
> for i in range(len(row)):
> col = row[i[
>
>

Yep. That one is working. Although that makes the planned upgrade from
Zope 2.10 to 2.12 a real pain because I use a lot of the following :

result = context.someZSQLMethod()
names = result.names()
dataForTemplate = dict(zip(names,result[0]))
dataForTemplate['addingSomeMoreData'] = 'datadata'
return context.comeTemplate(data=dataForTemplate)

When did the iteration feature go away ? Must have missed the
deprecation process.

- Andreas

_______________________________________________
Zope maillist - Zope@zope.org
https://mail.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
https://mail.zope.org/mailman/listinfo/zope-announce
https://mail.zope.org/mailman/listinfo/zope-dev )
Re: Iteration over columns in ZSQLMethod result not working in Zope 2.12.13 [ In reply to ]
To answer part of my own question:

ZSQLMethod column iteration went away with 2.12. Up until Zope 2.11.7
still had this feature available with no deprecation messages logged
when using this feature.

Should I file a bug for missing deprecation messages in 2.11 or for
missing functionality in 2.12 ?

- Andreas

_______________________________________________
Zope maillist - Zope@zope.org
https://mail.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
https://mail.zope.org/mailman/listinfo/zope-announce
https://mail.zope.org/mailman/listinfo/zope-dev )
Re: Iteration over columns in ZSQLMethod result not working in Zope 2.12.13 [ In reply to ]
Hi Tres,

[...]
>> Given some ZSQLMethod, and either ZMySQLDA (3.1.1) or ZPsycopgDA
>> (2.0.14 or 2.2.2)
>> and the following python script:
>>
>> result = context.someZSQLMethod()
>> for row in result:
>> for col in row: #this will fail
>> pass
>>
>> I get an AttributeError: __iter__

[...]

> I don't think the Record class fills the 'tp_iter' slot. [...]

I don't know about this tp_iter slot, but adding the following
DocTest to the Record tests.py will pass:

def test_RecordIteration():
"""

Creating a record

>>> r = P(('zx', 81 , 1.23))

We can iterate over a record:

>>> [i for i in r]
['zx', 81, 1.23]

"""

- Andreas

_______________________________________________
Zope maillist - Zope@zope.org
https://mail.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
https://mail.zope.org/mailman/listinfo/zope-announce
https://mail.zope.org/mailman/listinfo/zope-dev )
Re: Iteration over columns in ZSQLMethod result not working in Zope 2.12.13 [ In reply to ]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 12/01/2010 08:27 AM, Andreas Elvers wrote:
> Hi,
>
> I stumbled over the following error using Zope 2.12.13. Bug ?
>
> Given some ZSQLMethod, and either ZMySQLDA (3.1.1) or ZPsycopgDA
> (2.0.14 or 2.2.2)
> and the following python script:
>
> result = context.someZSQLMethod()
> for row in result:
> for col in row: #this will fail
> pass

Does the "safe list" builtin work for you in 2.12?

for row in result:
for col in list(row):
pass



Tres.
- --
===================================================================
Tres Seaver +1 540-429-0999 tseaver@palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkz+QnwACgkQ+gerLs4ltQ5kmQCfdzh17HxciJxRhr2oQwkxqrcL
ewkAoNc4bvQ/mI5fEq1xkrmn9bPiVWzA
=ZEge
-----END PGP SIGNATURE-----

_______________________________________________
Zope maillist - Zope@zope.org
https://mail.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
https://mail.zope.org/mailman/listinfo/zope-announce
https://mail.zope.org/mailman/listinfo/zope-dev )
Re: Iteration over columns in ZSQLMethod result not working in Zope 2.12.13 [ In reply to ]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 12/07/2010 05:02 AM, Andreas Elvers wrote:
> To answer part of my own question:
>
> ZSQLMethod column iteration went away with 2.12. Up until Zope 2.11.7
> still had this feature available with no deprecation messages logged
> when using this feature.
>
> Should I file a bug for missing deprecation messages in 2.11 or for
> missing functionality in 2.12 ?

Hmmm, I would file it as missing functionality in 2.12. The bug may be
due to changes in the supported version of Python (2.4 for Zope < 2.12,
2.6 for 2.12).



Tres.
- --
===================================================================
Tres Seaver +1 540-429-0999 tseaver@palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkz+QoAACgkQ+gerLs4ltQ7wMwCg1p4q1uBIk3BVWpDPU3fyx2dU
cVYAnAjA+JzC9W+q5VPlDyXUMOIEHA6l
=CNid
-----END PGP SIGNATURE-----

_______________________________________________
Zope maillist - Zope@zope.org
https://mail.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
https://mail.zope.org/mailman/listinfo/zope-announce
https://mail.zope.org/mailman/listinfo/zope-dev )
Re: Iteration over columns in ZSQLMethod result not working in Zope 2.12.13 [ In reply to ]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 12/07/2010 09:19 AM, Tres Seaver wrote:
> On 12/07/2010 05:02 AM, Andreas Elvers wrote:
>> To answer part of my own question:
>
>> ZSQLMethod column iteration went away with 2.12. Up until Zope 2.11.7
>> still had this feature available with no deprecation messages logged
>> when using this feature.
>
>> Should I file a bug for missing deprecation messages in 2.11 or for
>> missing functionality in 2.12 ?
>
> Hmmm, I would file it as missing functionality in 2.12. The bug may be
> due to changes in the supported version of Python (2.4 for Zope < 2.12,
> 2.6 for 2.12).

The attached script should help isolate the bug without needing an
actual SQL connection. Under 2.11, run as::

$ PYTHONPATH=lib/python /path/to/python2.4 iter_results_record.py

Under 2.12, run as::

$ bin/allpy iter_results_record.py

Note that the script runs without errors under both versions for me:
likely the security machinery isn't actually being wired up. I'm out of
time, however, to think harder about it.



Tres.
- --
===================================================================
Tres Seaver +1 540-429-0999 tseaver@palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAkz+UdoACgkQ+gerLs4ltQ7rPwCguzHh/nFv1hexflrJkNDl/YEI
OL0AoMsiIAv/p647aaACgvieRDhiUPRx
=6YB9
-----END PGP SIGNATURE-----
Re: Iteration over columns in ZSQLMethod result not working in Zope 2.12.13 [ In reply to ]
Am 7.12.10 15:19 , schrieb Tres Seaver:

>>
>> result = context.someZSQLMethod()
>> for row in result:
>> for col in row: #this will fail
>> pass
>
> Does the "safe list" builtin work for you in 2.12?
>
> for row in result:
> for col in list(row):
> pass
>
>

Yes. This works in 2.12.

_______________________________________________
Zope maillist - Zope@zope.org
https://mail.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
https://mail.zope.org/mailman/listinfo/zope-announce
https://mail.zope.org/mailman/listinfo/zope-dev )