Thread: [SQLObject] Writing a Web Interface to PostgreSQL
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: Michele S. <mic...@gm...> - 2005-10-21 12:09:22
|
I need to write a Web interface to a PostgreSQL database and I am evaluating SQLObject and FormEncode for the task at hand. I would like to know ihow to read tables not generated by SQLObject, in particular tables without an 'id' field. Is there some automatic way to do it? Also, is there already some kind of CRUD web interface available? Thanks for your help, Michele Simionato |
From: Jorge G. <go...@ie...> - 2005-10-21 12:52:11
|
Michele Simionato <mic...@gm...> writes: > I need to write a Web interface to a PostgreSQL database and I am > evaluating SQLObject and FormEncode for the task at hand. > I would like to know ihow to read tables not generated by SQLObject, > in particular > tables without an 'id' field. Is there some automatic way to do it? > Also, is there already some kind of CRUD web interface available? Hi Michele! I do that all the time, since my application was born before I got to know SQLObject and there are a few hundreds of tables and views... :-) At the docs take a look at the "sqlmeta" class (http://www.sqlobject.org/SQLObject.html#class-sqlmeta). There you'll see how to override table name, id name, etc. Be seeing you, -- Jorge Godoy <go...@ie...> |
From: Michele S. <mic...@gm...> - 2005-10-21 13:23:57
|
On 10/21/05, Jorge Godoy <go...@ie...> wrote: > At the docs take a look at the "sqlmeta" class > (http://www.sqlobject.org/SQLObject.html#class-sqlmeta). There you'll se= e how > to override table name, id name, etc. Ok, I will have a look. BTW I was doing some experiment lke the following o= ne: class Book(SQLObject): title =3D StringCol(length=3D30) score =3D StringCol(length=3D4) author =3D StringCol(length=3D20) date =3D StringCol(length=3D10) genre =3D StringCol(length=3D2) nation =3D StringCol(length=3D2) def insert_from_file(filename): for rec in csv.reader(file(filename), delimiter=3D'|'): Book(rec) and discovered that I have to use Book(title=3Drec[0], score=3Drec[1], ... ) Is there a method to pass the entire row without specifying the field names= ? Michele Simionato |
From: Oleg B. <ph...@ma...> - 2005-10-21 13:31:35
|
On Fri, Oct 21, 2005 at 01:23:43PM +0000, Michele Simionato wrote: > Is there a method to pass the entire row without specifying the field names? There is now because mappings (field name => value) are in random order (dictionaries). Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Michele S. <mic...@gm...> - 2005-10-21 13:39:12
|
On 10/21/05, Oleg Broytmann <ph...@ma...> wrote: > On Fri, Oct 21, 2005 at 01:23:43PM +0000, Michele Simionato wrote: > > Is there a method to pass the entire row without specifying the field n= ames? > > There is now because mappings (field name =3D> value) are in random or= der > (dictionaries). Yes, but sqlmeta contains an *ordered* .columnList, so I expected this information to be used. |
From: Oleg B. <ph...@ma...> - 2005-10-21 13:54:24
|
On Fri, Oct 21, 2005 at 01:39:08PM +0000, Michele Simionato wrote: > Yes, but sqlmeta contains an *ordered* .columnList, so I expected this > information > to be used. Its order does not correspond with the order of columns in an SQLObject 'cause it's constructed from a dictionary in the metaclass. Consider its order semi-random. Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Jeff B. <jb...@ru...> - 2005-10-21 17:16:38
|
Oleg Broytmann wrote: > On Fri, Oct 21, 2005 at 01:39:08PM +0000, Michele Simionato wrote: >>Yes, but sqlmeta contains an *ordered* .columnList, so I expected this >>information >>to be used. > > Its order does not correspond with the order of columns in an SQLObject > 'cause it's constructed from a dictionary in the metaclass. Consider its > order semi-random. semi-random order? ;-) I've not been following this thread closely, but if it's desirable to make .columnList correspond with SQLObject columns, it should be possible to do this with OrderedDict: http://www.voidspace.org.uk/python/odict.html Jeff Bauer Rubicon, Inc. |
From: Oleg B. <ph...@ma...> - 2005-10-21 17:23:32
|
On Fri, Oct 21, 2005 at 12:16:26PM -0500, Jeff Bauer wrote: > I've not been following this thread closely, but if it's > desirable to make .columnList correspond with SQLObject > columns, it should be possible to do this with OrderedDict: Even simpler: class MyTable(SQLObject): pass MyTable.sqlmeta.addColumn(StringCol(name="name")) MyTable.sqlmeta.addColumn(StringCol(name="surname")) MyTable.sqlmeta.addColumn(IntCol(name="age")) Now MyTable.sqlmeta.columnList contains the list in the exactly desired order. That what I've meant by "semi-random" - one can control this if one wishes. But one seldom needs it. Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: Ian B. <ia...@co...> - 2005-10-22 23:16:39
|
Michele Simionato wrote: > On 10/21/05, Jorge Godoy <go...@ie...> wrote: > >>At the docs take a look at the "sqlmeta" class >>(http://www.sqlobject.org/SQLObject.html#class-sqlmeta). There you'll see how >>to override table name, id name, etc. > > > Ok, I will have a look. BTW I was doing some experiment lke the following one: > > > class Book(SQLObject): > title = StringCol(length=30) > score = StringCol(length=4) > author = StringCol(length=20) > date = StringCol(length=10) > genre = StringCol(length=2) > nation = StringCol(length=2) > > def insert_from_file(filename): > for rec in csv.reader(file(filename), delimiter='|'): > Book(rec) > > and discovered that I have to use > > Book(title=rec[0], score=rec[1], ... ) > > Is there a method to pass the entire row without specifying the field names? No, I abhor the idea that columns are ordered in any significant way. Instead you should do: file_column_order = ['title', 'score', ...] Book(**dict(zip(file_column_order, rec))) I usually get file_column_order from the first row. -- Ian Bicking | ia...@co... | http://blog.ianbicking.org |
From: Oleg B. <ph...@ma...> - 2005-10-21 13:26:40
|
On Fri, Oct 21, 2005 at 10:45:48AM -0200, Jorge Godoy wrote: > to override table name, id name, etc. No all schemes are compatible with SQLObject, though. Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: gary n. <li...@ga...> - 2005-10-21 12:58:59
|
Without an id field, it basically won't work. you have to map it to the database field that serve that purpose. It is stored in cls.sqlmeta.idName if my reading of the code is right. You need to query cls.sqlmeta.columns for the definitions of columns (or is it columnDef) and I am not to clear about this. You may like to checkout turogears where there is a catwalk module that does more or less what you are looking for but I don't think it would allows you to alter table definition. check it out. The other thread I started about fromDatabase is related to this actually as I am looking into a CRUD style app. "Michele Simionato" <mic...@gm...> wrote in message news:4ed...@ma...... I need to write a Web interface to a PostgreSQL database and I am evaluating SQLObject and FormEncode for the task at hand. I would like to know ihow to read tables not generated by SQLObject, in particular tables without an 'id' field. Is there some automatic way to do it? Also, is there already some kind of CRUD web interface available? Thanks for your help, Michele Simionato ------------------------------------------------------- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl |
From: Kevin D. <da...@gm...> - 2005-10-21 14:00:33
|
On 10/21/05, Michele Simionato <mic...@gm...> wrote: > Also, is there already some kind of CRUD web interface available? Ronald Jaramillo's CatWalk is under active development: http://checkandshare.com/catwalk/ Kevin |
From: Jorge G. <go...@ie...> - 2005-10-21 18:57:31
|
Oleg Broytmann <ph...@ma...> writes: > On Fri, Oct 21, 2005 at 12:16:26PM -0500, Jeff Bauer wrote: >> I've not been following this thread closely, but if it's >> desirable to make .columnList correspond with SQLObject >> columns, it should be possible to do this with OrderedDict: > > Even simpler: > > class MyTable(SQLObject): > pass > > MyTable.sqlmeta.addColumn(StringCol(name="name")) > MyTable.sqlmeta.addColumn(StringCol(name="surname")) > MyTable.sqlmeta.addColumn(IntCol(name="age")) > > Now MyTable.sqlmeta.columnList contains the list in the exactly desired > order. That what I've meant by "semi-random" - one can control this if one > wishes. But one seldom needs it. Another option is to use a list where the elements are the column names in the same order as desired by the application, then one can share indices and use the value from the list as the key... -- Jorge Godoy <go...@ie...> |