On Feb 17, 2009, at 7:27 AM, ??? wrote:
Recently I am studying some python ORM libraries, such as sqlalchemy.
These are very powerful technologies to handle database. But I think
my project are not complicated to enough to benefit from a complete
What I really want, is some easy ways to load data from database, and
change rows of data to list of named tuple, then I could send these
data to my client application.
I don't think I want these subtle behavior such as lazy load, auto
update, ect. in ORM.
So is there some libraries like that?
Or is there some tools that could generate code from database scheme
as I want?
As others have suggested, there are lower-level libraries for database
access, like the sqlite library included with Python >= 2.5.
The API wrapper I'm most familiar with (psycopg2) has some nice
features like returning Postgres text as Python strings and Postgres
ints as Python ints and Postgres arrays as Python lists. It can also
return rows as dictionaries keyed by column names. You get some nice
things for free.
I read someone's advice that one doesn't need an ORM for simple
projects but they become more useful as projects grow in complexity.
I'm not so sure of that. I felt like the opposite could well be true
-- the limitations inherent in a general purpose tool like an ORM are
less likely to be a problem in a small, simple project than a larger
In short, I gather that others on this list are a lot more fond of
SqlAlchemy and ORMs in general than I am. Granted, my experience is
very limited. I tried to integrate SqlAlchemy in one project,
struggled for a long time to express how I wanted my tables joined,
and finally found that performance was bad compared to our homegrown
SQL. My boss and I were both very comfortable with SQL and were happy
to go back to writing our own SQL statements and coding a data access
I don't intend this as a criticism of SqlAlchemy. On the contrary I am
impressed by what it does. But I often see people promoting ORM as the
solution to all database access problems, and I certainly don't feel
like it is.