Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.mixmin.net!feeds.phibee-telecom.net!newsfeed.xs4all.nl!newsfeed4.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.011 X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; 'languages.': 0.04; 'python)': 0.05; 'postgresql': 0.07; 'reason,': 0.07; 'socket': 0.07; 'suppose': 0.07; 'way:': 0.09; 'cc:addr:python-list': 0.11; 'python': 0.11; "wouldn't": 0.14; 'decision,': 0.16; 'fancy': 0.16; 'feature-rich': 0.16; 'from:addr:rosuav': 0.16; 'from:name:chris angelico': 0.16; 'impartial': 0.16; 'subject:ORM': 0.16; 'wrote:': 0.18; 'module': 0.19; 'options.': 0.19; 'pieces': 0.19; 'thu,': 0.19; 'work,': 0.20; 'programming': 0.22; 'cc:addr:python.org': 0.22; 'choices': 0.24; 'decide': 0.24; 'fairly': 0.24; 'people,': 0.24; 'cc:2**0': 0.24; "i've": 0.25; 'options': 0.25; 'possibly': 0.26; 'least': 0.26; 'header:In- Reply-To:1': 0.27; 'feature': 0.29; 'am,': 0.29; 'database,': 0.30; 'message-id:@mail.gmail.com': 0.30; "i'm": 0.30; '(which': 0.31; 'code': 0.31; 'usually': 0.31; 'libraries': 0.31; 'option.': 0.31; 'know.': 0.32; 'languages': 0.32; 'interface': 0.32; 'option': 0.32; 'another': 0.32; 'quite': 0.32; 'open': 0.33; 'worked': 0.33; 'maybe': 0.34; "i'd": 0.34; 'could': 0.34; 'basic': 0.35; "can't": 0.35; 'connection': 0.35; 'but': 0.35; 'received:google.com': 0.35; 'choosing': 0.36; 'module.': 0.36; 'options:': 0.36; 'possible': 0.36; 'two': 0.37; 'thank': 0.38; 'basis.': 0.38; 'needed': 0.38; '12,': 0.39; 'either': 0.39; 'skip:u 10': 0.60; 'truly': 0.60; 'most': 0.60; 'numbers': 0.61; 'simple': 0.61; 'first': 0.61; 'making': 0.63; 'choose': 0.64; 'pick': 0.64; 'become': 0.64; 'more': 0.64; '(that': 0.65; 'worth': 0.66; 'between': 0.67; 'social': 0.69; 'presented': 0.69; 'quality': 0.72; 'guides': 0.74; 'subject:SQL': 0.84; 'way)': 0.84; 'to:none': 0.92; 'hundred': 0.95 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:cc :content-type; bh=U8/cIi71CVvJOMF7c6RCnqfE3cJo0NcK36JQuv+32E4=; b=hpXt+Y/a6jcnWx7wY9yC4e8O0bj8cUW3OhdVNtRYnJNXS/lCwtPY+odLQK/+r0ibgz 6P0qAQ36x2jrszIHBzsAnYokC/O0wlBbielWPcepf2d+82n9Ug8kucmbAzPdomvUZP+X a75WyRmgYG3O1Bm1ltfMx2DoYm6n6aCF/N+A1ImprePSdWlNBV7uvnX0A2SWfe+QgMo1 jdDsiVLi4XEY9+uTaTmsJCZ3Dr8Mi2Uwj9EOOs6mURJRrT4g7zL1CaEYhttJKgcF1EY3 cr2qnyAkveTdhB2IAHl9oL7pkC6W2f0mlMcTCNK02dxmQBki8qc/OAuxeQ24XMhOP+Pk 69WQ== MIME-Version: 1.0 X-Received: by 10.220.113.207 with SMTP id b15mr379638vcq.55.1402519071520; Wed, 11 Jun 2014 13:37:51 -0700 (PDT) In-Reply-To: <38e70112-f092-4445-823f-88cfe81e7483@googlegroups.com> References: <38e70112-f092-4445-823f-88cfe81e7483@googlegroups.com> Date: Thu, 12 Jun 2014 06:37:51 +1000 Subject: Re: Thoughts on SQL vs ORM From: Chris Angelico Cc: "python-list@python.org" Content-Type: text/plain; charset=UTF-8 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 43 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1402519079 news.xs4all.nl 2842 [2001:888:2000:d::a6]:42212 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:73188 On Thu, Jun 12, 2014 at 5:39 AM, 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