Thread: [Modeling-users] Stability of Modeling
Status: Abandoned
Brought to you by:
sbigaret
From: Edmund L. <el...@in...> - 2003-05-30 01:35:13
|
Hello, I'm new to Modeling and this list. I've been looking around for a decent Python ORM for a long time, and it looks like Modeling just popped out of nowhere earlier this year, very fully featured at version 0.8. Where did it come from? Is Modeling stable and useful for production? Does it scale well, etc. Would anybody care to tell me how Modeling fits in amongst all the other Python ORMs? As far as I can see, Modeling stands alone in its sophistication, ability to handle joins, etc., but I've not used it, hence the desire for some comments... Thanks, ...Edmund. |
From: Sebastien B. <sbi...@us...> - 2003-05-30 12:52:10
|
Edmund Lian <el...@in...> wrote: > Hello, >=20 > I'm new to Modeling and this list. Hi & welcome here ;) > I've been looking around for a decent Python ORM for a long time, and > it looks like Modeling just popped out of nowhere earlier this year, > very fully featured at version 0.8. Where did it come from? The framework's first public release was at the end of July 2002. As stated in the historical preamble in the User's Guide=20 (http://modeling.sourceforge.net/UserGuide/intro-history.html)=20 that you maybe have already read, the project started because I missed Apple's EOF and couldn't stand for having to write SQL by hand and embed sql statements within OO-code. Weird but true, at that time I searched but didn't find any of the existing python ORM. A great part of it was developped on my spare time --however, my former company did support the effort and quickly used it in its projects. Admittedly most of the testing, including pre-alpha and alpha stages, was made by the company's developpers while working on clients' projects. > Is Modeling stable and useful for production?=20 To my knowledge it has already been put in production for 6/7 months in two major applications --short description: a zope-based web app. (multi-threaded) dedicated to the supervision of doctors in duty for the french emergency services, and a python-gtk-based app. (single-threaded) for bookshops' stock and sales management. Both are using the postgresql DB (psycopg adaptor), the former's DB size is ~1.5Mo, 10 tables, the latter: ~200Mo, 52 tables. [size: size of the file generated by pg_dump/format:plain-text SQL script file] Other users on this list might comment on this with their own experience and deployed projects, if any. > Does it scale well, etc. Could you be more specific about which kind of informations you'd like to get? > Would anybody care to tell me how Modeling fits in amongst all the > other Python ORMs? As far as I can see, Modeling stands alone in its > sophistication, ability to handle joins, etc., but I've not used it, > hence the desire for some comments... =20=20 There is quite a bunch of existing python orms, true cf. http://www.python.org/cgi-bin/moinmoin/HigherLevelDatabaseProgramming Unfortunately, I do not know them well. We once discussed some of the differences between mdl and middlekit, see https://sourceforge.net/mailarchive/forum.php?thread_id=3D1569043&forum_id= =3D10674 AFAIK, transparent support for inheritance is not available in other orms. Another probably unique feature is that transactions are also available at the object level, see http://modeling.sourceforge.net/UserGuide/nested-editing-context.html Keep in mind that this is no "authoritative" answer since I never really used other orms, I just read their docs. Feel free to ask for more, we'll be happy to answer to the best of our knowledge. Regards, -- S=E9bastien. |
From: Edmund L. <el...@in...> - 2003-05-30 17:54:10
|
Sebastien Bigaret wrote: > The framework's first public release was at the end of July 2002. As > stated in the historical preamble in the User's Guide > (http://modeling.sourceforge.net/UserGuide/intro-history.html) > that you maybe have already read, the project started because I missed > Apple's EOF and couldn't stand for having to write SQL by hand and embed > sql statements within OO-code. Weird but true, at that time I searched > but didn't find any of the existing python ORM. I know the feeling. I'm still trying to find something with enough expressiveness and power. I only stumbled across Modeling a few days ago. BTW, I know you're a bit "touchy" about the name, but it is an important issue. When I was trying to find more info about Modeling, searching on the name was useless since it is such a widely used verb! >>Does it scale well, etc. > > > Could you be more specific about which kind of informations you'd like > to get? I was after the kinds of numbers that you provided, thank you. I'll experiment with it soon to get a better feel for it. One thing that I'm concerned about is the use of very long method and parameter names, like: qualifier=qualifierWithQualifierFormat('lastName caseInsensitiveLike "hu?o"') My wrists started to hurt as soon as I saw this (I have RSI)! :-) ...Edmund. |
From: Yannick G. <yan...@sa...> - 2003-05-30 18:10:45
|
=2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On May 30, 2003 01:49 pm, Edmund Lian wrote: > I was after the kinds of numbers that you provided, thank you. I'll=20 > experiment with it soon to get a better feel for it. One thing that I'm=20 > concerned about is the use of very long method and parameter names, like: > qualifier=3DqualifierWithQualifierFormat('lastName caseInsensitiveLike=20 > "hu?o"') > My wrists started to hurt as soon as I saw this (I have RSI)! :-) You need auto-completion: M-/ in emacs C-p in vi C-SPACE in a few others ; ) =2D --=20 Yannick Gingras Byte Gardener, Savoir-faire Linux inc. (514) 276-5468 =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+155Orhy5Fqn/MRARApywAJ9TQjulGT8s2rqHz+uXph6IZrtXBgCfQCs9 kg8aLDPeT/SKdBtmdpfJUYY=3D =3DSaA9 =2D----END PGP SIGNATURE----- |
From: ludovic B. <lu...@zy...> - 2003-05-30 21:38:28
|
Today, Yannick Gingras a =E9crit: YG> On May 30, 2003 01:49 pm, Edmund Lian wrote: YG> YG> > qualifier=3DqualifierWithQualifierFormat('lastName caseInsensitiveLik= e YG> > "hu?o"') YG> YG> > My wrists started to hurt as soon as I saw this (I have RSI)! :-) YG> YG> You need auto-completion: YG> M-/ in emacs YG> C-p in vi YG> C-SPACE in a few others YG> YG> ; ) And apply these advises : http://eeshop.unl.edu/rsi.html --=20 ludovic Bellier http://www.finix.eu.org |
From: Edmund L. <el...@in...> - 2003-05-31 17:39:45
|
ludovic Bellier wrote: > And apply these advises : > http://eeshop.unl.edu/rsi.html Thanks for the link! ...Edmund. |
From: Edmund L. <el...@in...> - 2003-05-31 17:38:17
|
Yannick Gingras wrote: > You need auto-completion: > M-/ in emacs > C-p in vi > C-SPACE in a few others Thanks--didn't think about this. I do use a Kinesis keyboard (http://www.kinesis-ergo.com/contoured.htm), and this has been the biggest help so far. But it is expensive! ...Edmund. |
From: Sebastien B. <sbi...@us...> - 2003-05-31 08:44:07
|
Edmund Lian <el...@in...> wrote: > BTW, I know you're a bit "touchy" about the name, but it is an important > issue. When I was trying to find more info about Modeling, searching on t= he > name was useless since it is such a widely used verb! Alas, the problem is known and the name should be changed. My fault here --some people here keep picking on me on a regular basis. I'll gather the name proposals in a forthcoming mail and we'll try to make it happen for 0.9 (that's one of the few remaining prerequisites to leave the long-standing pre-0.9 serie). > >> Does it scale well, etc. > > Could you be more specific about which kind of informations you'd > > like to get? >=20 > I was after the kinds of numbers that you provided, thank you. I'll > experiment with it soon to get a better feel for it. Fine. I guess these figures should be put somewhere on the website. > One thing that I'm concerned about is the use of very long method and > parameter names, like: >=20 > qualifier=3DqualifierWithQualifierFormat('lastName caseInsensitiveLike "h= u?o"') >=20 > My wrists started to hurt as soon as I saw this (I have RSI)! :-) Ouch! This is another known issue that should be addressed for 0.9 as well. As Yannick said, auto-completion is your friend, however this is not a definitive answer. I'll post soon a API-renaming proposal, dedicated to the most useful methods --and fetching should be made simpler. It should have been addressed for long --be sure it's not unwillingness, rather a matter of time. As usual... As far as caseInsensitiveLike is concerned: I once made 'ilike' an alternate for 'caseInsensitiveLike', but it seems to have disappeared. Back again on cvs, and attached is the corresponding patch. This will be in next release. -- S=E9bastien. ----------8<---------------8<---------------8<---------------8<--------- Index: Modeling/Qualifier.py =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/modeling/ProjectModeling/Modeling/Qualifier.py,v retrieving revision 1.5 diff -u -r1.5 Qualifier.py --- Modeling/Qualifier.py 27 Jan 2003 22:41:59 -0000 1.5 +++ Modeling/Qualifier.py 31 May 2003 08:39:40 -0000 @@ -78,7 +78,7 @@ =20 # Module def allQualifierOperators(): - return ('=3D=3D', '!=3D', '<', '<=3D', '>', '>=3D', 'like', 'caseInsensi= tiveLike') + return ('=3D=3D', '!=3D', '<', '<=3D', '>', '>=3D', 'like', 'caseInsensi= tiveLike', 'ili ke') =20 def filteredArrayWithQualifier(objects, qualifier): result=3D[] @@ -96,7 +96,7 @@ if op =3D=3D '>': return QualifierOperatorGreaterThan if op =3D=3D '>=3D': return QualifierOperatorGreaterThanOrEqualTo if op =3D=3D 'like': return QualifierOperatorLike - if op in ('caseInsensitiveLike', 'iLike'): + if op in ('caseInsensitiveLike', 'ilike'): return QualifierOperatorCaseInsensitiveLike raise ValueError, aString =20 Index: Modeling/QualifierParser.py =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/modeling/ProjectModeling/Modeling/QualifierParser.py,v retrieving revision 1.7 diff -u -r1.7 QualifierParser.py --- Modeling/QualifierParser.py 10 Feb 2003 11:27:10 -0000 1.7 +++ Modeling/QualifierParser.py 31 May 2003 08:39:43 -0000 @@ -175,7 +175,7 @@ self.rv.append(Token(type=3Ds)) =20=20=20=20=20=20=20 def t_comp_op(self, s): - r' \+ | \* | =3D=3D | >=3D | > | <=3D | < | \!=3D | like | caseInsensi= tiveLike ' + r' \+ | \* | =3D=3D | >=3D | > | <=3D | < | \!=3D | like | caseInsensi= tiveLike | ilik e' trace('Token COMP_OP: %s'%s) self.rv.append(Token(type=3Ds)) =20=20=20=20=20=20=20 @@ -326,6 +326,7 @@ comp_op ::=3D !=3D comp_op ::=3D like comp_op ::=3D caseInsensitiveLike + comp_op ::=3D ilike ''' trace('comp_op: %s'%args[0]) return AST(type=3Dargs[0]) Index: Modeling/tests/test_Qualifier.py =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /cvsroot/modeling/ProjectModeling/Modeling/tests/test_Qualifier.p= y,v retrieving revision 1.7 diff -u -r1.7 test_Qualifier.py --- Modeling/tests/test_Qualifier.py 10 Feb 2003 11:51:43 -0000 1.7 +++ Modeling/tests/test_Qualifier.py 31 May 2003 08:39:54 -0000 @@ -271,6 +271,9 @@ m_s=3DqualifierWithQualifierFormat('book.title caseInsensitiveLike "*m= ?s*"') res=3DfilteredArrayWithQualifier(self.authors, m_s) self.failUnless(len(res)=3D=3D2 and self.jean in res and self.victor i= n res) + m_s=3DqualifierWithQualifierFormat('book.title ilike "*m?s*"') + res=3DfilteredArrayWithQualifier(self.authors, m_s) + self.failUnless(len(res)=3D=3D2 and self.jean in res and self.victor i= n res) =20 # invalid expression self.failUnlessRaises(ValueError, qualifierWithQualifierFormat, ----------8<---------------8<---------------8<---------------8<--------- |