Thoughts on SQL vs ORM

Chris Angelico rosuav at gmail.com
Wed Jun 11 16:37:51 EDT 2014


On Thu, Jun 12, 2014 at 5:39 AM,  <suamere at gmail.com> wrote:
> When presented with options, these are the possible stances:
>
> 1. (Lead) Become educated on the options and decide on one.
> 2. (Follow) Become educated on the options and remain impartial.
> 3. Remain ignorant of the similarities/differences and decide on one.
> 4. (Get out of the way) Remain ignorant of the similarities/differences and remain impartial.
>
> Of course, deciding on one could also be a case-by-case basis.  Maybe for one use you decide on one for one reason, and for the other case you decide on another option.
>
> Thank you for choosing number 3 and casting a vote without understanding.  Any other stance is understandable, but like most people, you choose to hurt the social group you are participating in by making uninformed decisions.
>

That's not quite fair. Suppose I'm looking at working with a
PostgreSQL database, and I have five options:

1) Write SQL and use libpq (if C) or psycopg2 (if Python)
2) Use Fred's Fancy Feature-Rich Database Interface
3) Use Joe's Simple Database Interface
4) Use Nancy's Dict-Like Database Interface
5) Bypass all libraries and open a socket connection on port 5432

I have a fairly good understanding of what's needed for option 5, as
I've worked with Pike's PostgreSQL module. And it's a lot of work, so
I wouldn't do it. (That would be your choice 1, "Lead".) But it's not
worth my time to learn three pieces of middle-ware before making my
decision, so I'm going to remain fairly ignorant of at least two of
them - I'd look at their quick-start guides and basic feature lists,
possibly pick one of them to explore in detail, and then make a
decision between that and the first option. Ultimately, I have to make
a decision, because code can't be impartial - either I'm using some
module or I'm not - and it's usually impossible to truly become
educated on all the options.

So I'd say there's more of a spectrum between your choices 1 and 3
than you imply. Perhaps I can word it this way: Choose one of the
options you know about, and the quality of the decision scales with
the number of other options you also know. (Which is why I like to
know huge numbers of programming languages. When I choose Python for a
job, it's because it's better than possibly a hundred other languages
that I could have chosen.)

ChrisA



More information about the Python-list mailing list