Re: Question Concerning Z SQL Method and Class Bindings

Peter Sabaini <[email protected]> Tue, 25 May 2010 21:55:52 +0200
Newsgroups gmane.comp.web.zope.database
Message-ID <[email protected]>
--===============5578443646887587638==
Content-Type: multipart/signed; micalg="pgp-sha1";
	protocol="application/pgp-signature";
	boundary="=-VaNhUKiuNvVHNtITpB/N"


--=-VaNhUKiuNvVHNtITpB/N
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, 2010-05-25 at 12:21 -0700, Mark Phillips wrote:
> Peter,
>=20
> I don't think I phrased my question very well. Also, I am coming from
> a Java background, so I am thinking about result sets, which may not
> be applicable to Python.
>=20
> If I have a Z SQL Method query that returns multiple rows to a brains
> class, how do I=20
>=20
> (1) reference the returned object that has all the rows
> (2) reference a particular row in the returned object
> (3) reference a particular piece of data in the returned object.=20

"Brain" objects are bound to individual record objects; each brain
object has access to the columns of the record it is bound to.=20

There is no way to access the whole result object this way. This is not
something Python-specific but rather the way brains are designed -- they
are used to enhance individual records, not the result set.

> What is the returned object - list, dictionary, some special object
> with associated APIs?

The whole result set is an object of type
Shared.DC.ZRDB.Results.Results. Individual records are instances of  an
"inner class" r which inherits from Record.Record and the brain class
you specify (Python supports multiple inheritance).=20

Result objects can roughly be treated like lists (eg. iterable, allow
individual record access, have a length).

> Where is this documented? I can't seem to find it in the Zope 2 book.

Unfortunately this is largely undocumented.=20

peter.

>=20
> Thanks!
>=20
> Mark
>=20
> On Tue, May 25, 2010 at 12:03 PM, Peter Sabaini <[email protected]>
> wrote:
>        =20
>         On Mon, 2010-05-24 at 21:33 -0700, Mark Phillips wrote:
>         > I am reading the zope 2 book (relational database section)
>         and it
>         > talks about binding classes by putting them in the
>         Extensions
>         > directory and then associating them with a Z SQL Method.
>         That seems to
>         > be rather straight forward, but where can I find some
>         examples of
>         > accessing the values returned from the Z SQL Method in
>         Python. For
>         > example,
>         >
>         > Z SQL Method
>         > select * from offense where gameID=3D<some input value from a
>         form>
>         >
>         > This returns ~10 rows. Each row has columns playerID, PB,
>         BB, SacBunt,
>         > HBP as well as other columns, all containing integer values.
>         >
>         > class GameStats
>         > """Reads the database for the stats for every player in a
>         game and
>         > calculates the stats"""
>         >
>         >     def AtBat(self, player_id):
>         >         """Calculate the AB for a player. AB =3D PA - (BB +
>         SacBunt +
>         > HBP - SF)"""
>         >         How do I get the columns PA, BB, etc for a
>         particular playerID
>         > to calculate the BA from the result returned by the Z SQL
>         method? Is
>         > there some documentation for how to access the results of
>         the query
>         > within this class?
>        =20
>        =20
>         Individual columns should be accessible as attributes of the
>         Brain
>         object, eg. self.playerID etc. If there's a column PA, it
>         should be
>         named self.PA.
>        =20
>         Btw., usually when I'm in doubt which attributes or methods
>         are
>         available for a given object, I just put a breakpoint at the
>         location in
>         question and poke at it with pdb, the Python debugger. See eg.
>         http://wiki.zope.org/zope2/DebuggingWithPdb , under
>         "breakpoint in the
>         code" how to invoke the debugger. See
>         http://docs.python.org/library/pdb.html for pdb docs.
>        =20
>         hth,
>         peter.
>        =20
>         >
>         > Thanks!
>         >
>         > Mark
>         > _______________________________________________
>         > Zope-DB mailing list
>         > [email protected]
>         > https://mail.zope.org/mailman/listinfo/zope-db
>        =20
>=20


--=-VaNhUKiuNvVHNtITpB/N
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iEYEABECAAYFAkv8K0gACgkQafAcTZYKVBw1LQCfWXbu7AyDrgeGTrTWG2waU7Qy
kP8An2/IaBTilRq/NFJXTqC//3+1sUOS
=eWy7
-----END PGP SIGNATURE-----

--=-VaNhUKiuNvVHNtITpB/N--


--===============5578443646887587638==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Zope-DB mailing list
[email protected]
https://mail.zope.org/mailman/listinfo/zope-db

--===============5578443646887587638==--