On 3 abr, 11:06, Bruno Desthuilliers <bruno. [EMAIL PROTECTED]> wrote: > Luis M. González a écrit : > > > I have come to the same conclusion. > > ORMs make easy things easier, but difficult things impossible... > > Not my experience with SQLAlchemy. Ok, I still not had an occasion to > test it against stored procedures, but when it comes to complex queries, > it did the trick so far - and (warning: front-end developper > considerations ahead) happened to be much more usable than raw strings > to dynamically *build* the queries. > > > The best approach I've seen so far is webpy's (if we are talking of > > web apps). > > It isn't an ORM, it is just a way to make the database api easier to > > use. > > Queries don't return objects, they return something similar to > > dictionaries, which can be used with dot notation ( for example, > > result.name is equal to result['name'] ). > > > A simple select query would be db.select('customers') or > > db.select('customers', name='John'). > > But you can also resort to plain sql as follows: db.query('select * > > from customers where name = "John"'). > > > Simple, effective and doesn't get in your way. > > Seems nice too in another way. Is that part independant of the rest of > the framework ? If so, I'll have to give it a try at least for admin > scripts.
Yes, webpy's db api can be used in stand-alone scripts if you want. See below: import web db = web.database(dbn='mysql', db='northwind', user='root') x = db.select('employees') for i in x: print i.FirstName, i.LastName ... Another good thing is that, since queries return Storage objects (similar to dictionaries), they are much more flexible. Suppose that you get the results of a form sent via a POST method, and you want to insert this data into your database. You would simple write: i = web.input() db.insert('orders', **i) So everything related to CRUD operations are is easy to do, without having to mess with objects. I think this sticks strictly to the KISS principle, keeping it simple, with less overhead, less layers of abstraction and therefore, less bugs and complications. And it matchs perfectly webpy's philosofy for creating web apps. Luis -- http://mail.python.org/mailman/listinfo/python-list