From: Matt R. <sho...@gm...> - 2007-06-19 00:11:24
|
Sorry for what is probably a painfully obvious question, but I can't figure out why this: def results(): row = AttendanceRecord.select() for i in row: print i produces this: <AttendanceRecord 1L sid='831649232' timeIn='datetime.datetime...)'> <AttendanceRecord 2L sid='831649232' timeIn='datetime.datetime...)'> Specifically, why is each row truncated? I've only been at sqlobject for a couple of days and I like it a lot more than mysqldb, but this is driving me a little nutty. thanks, -- Matt |
From: Bill D. <de...@se...> - 2007-06-19 00:37:27
|
Matt Richardson wrote: > Sorry for what is probably a painfully obvious question, but I can't > figure out why this: > > def results(): > row = AttendanceRecord.select() > for i in row: > print i > > produces this: > > <AttendanceRecord 1L sid='831649232' timeIn='datetime.datetime...)'> > <AttendanceRecord 2L sid='831649232' timeIn='datetime.datetime...)'> > > Specifically, why is each row truncated? I've only been at sqlobject > for a couple of days and I like it a lot more than mysqldb, but this > is driving me a little nutty. > It just shows summary data. If you want to see everything, you can do something like: def results(): row = AttendanceRecord.select() for i in row: print "%d %s %s" % (i.id, i.sid, i.timeIn) There may be a way to make it print everything as well, but I don't know that. Bill |
From: Matt R. <sho...@gm...> - 2007-06-19 04:10:14
|
On 6/18/07, Bill Denney <de...@se...> wrote: > Matt Richardson wrote: > > Sorry for what is probably a painfully obvious question, but I can't > > figure out why this: > > > > def results(): > > row = AttendanceRecord.select() > > for i in row: > > print i > > > > produces this: > > > > <AttendanceRecord 1L sid='831649232' timeIn='datetime.datetime...)'> > > <AttendanceRecord 2L sid='831649232' timeIn='datetime.datetime...)'> > > > > Specifically, why is each row truncated? I've only been at sqlobject > > for a couple of days and I like it a lot more than mysqldb, but this > > is driving me a little nutty. > > > It just shows summary data. If you want to see everything, you can do > something like: > > def results(): > row = AttendanceRecord.select() > for i in row: > print "%d %s %s" % (i.id, i.sid, i.timeIn) > > There may be a way to make it print everything as well, but I don't know > that. > > Bill > I think I might go through the code and see what's what. My guess was, as you said, select() was returning a summary, indicated by the ... just before the last ). The problem I was running in to was that this is not what is shown in the sqlobject examples at sqlobject.org. Maybe my result sets were longer than the examples and that's where I got bit. Thanks for the example, I think that might do the trick. -- Matt |
From: Jaime W. <pro...@gm...> - 2007-06-19 03:44:00
|
I think the rows are truncated to prevent really large objects from printing hard-to-read representations. But, I think you're code may be just a bit off... def results(): row = AttendanceRecord.select() for i in row: print i When you call the .select() method, you get a resultset object back. Here's a quick snippet from my interpreter: In [17]: Test.select() Out[17]: <SelectResults at 10d17b0> What's a SelectResults object? Well, my poor-man's definition is - "it's an iterator for pulling SQLObjects from the database". Of course that only scratches the surface. You can see more here -> http://www.sqlobject.org/class-sqlobject.sresults.SelectResults.html Anyway, according to your variable names in your results function, you're actually iterating through a `row'. However, you're really iterating over a SelectResults object. So, to lessen the confusion, you should write your function like this: def results() for row in AttendanceRecord.select(): print row.sqlmeta.asDict() The asDict method returns the `row' as a dictionary. So you can see `everything' without truncation. hth, jw On 6/18/07, Bill Denney <de...@se...> wrote: > > Matt Richardson wrote: > > Sorry for what is probably a painfully obvious question, but I can't > > figure out why this: > > > > def results(): > > row = AttendanceRecord.select() > > for i in row: > > print i > > > > produces this: > > > > <AttendanceRecord 1L sid='831649232' timeIn='datetime.datetime...)'> > > <AttendanceRecord 2L sid='831649232' timeIn='datetime.datetime...)'> > > > > Specifically, why is each row truncated? I've only been at sqlobject > > for a couple of days and I like it a lot more than mysqldb, but this > > is driving me a little nutty. > > > It just shows summary data. If you want to see everything, you can do > something like: > > def results(): > row = AttendanceRecord.select() > for i in row: > print "%d %s %s" % (i.id, i.sid, i.timeIn) > > There may be a way to make it print everything as well, but I don't know > that. > > Bill > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > sqlobject-discuss mailing list > sql...@li... > https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss > -- "Government does not solve problems; it subsidizes them." Ronald Reagan |
From: Matt R. <sho...@gm...> - 2007-06-19 04:23:14
|
On 6/18/07, Jaime Wyant <pro...@gm...> wrote: > I think the rows are truncated to prevent really large objects from printing > hard-to-read representations. > > But, I think you're code may be just a bit off... > > def results(): > row = AttendanceRecord.select () > for i in row: > print i > > When you call the .select() method, you get a resultset object back. Here's > a quick snippet from my interpreter: > > In [17]: Test.select() > Out[17]: <SelectResults at 10d17b0> > > What's a SelectResults object? Well, my poor-man's definition is - "it's an > iterator for pulling SQLObjects from the database". Of course that only > scratches the surface. You can see more here -> > http://www.sqlobject.org/class-sqlobject.sresults.SelectResults.html > > Anyway, according to your variable names in your results function, you're > actually iterating through a `row'. However, you're really iterating over a > SelectResults object. So, to lessen the confusion, you should write your > function like this: > > def results() > for row in AttendanceRecord.select(): > print row.sqlmeta.asDict() > > The asDict method returns the `row' as a dictionary. So you can see > `everything' without truncation. > > hth, > jw > > Thanks. I read in the docs that select results are generators, so it should be possible to yield each record without having to store the whole thing in memory. The final application is not going to have a lot of data, but I'd like to learn how to iterate over the results generator-style vs list or dictionary style. I managed to get it displayed in full using an ugly query = AttendanceRecord._connection.queryAll("SELECT * FROM attendance_record") but that's too much like mysqldb :) Thanks for the example with sqlmeta, I haven't experimented with that yet. take care, -- Matt |