Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #86046

Re: try pattern for database connection with the close method

Path csiph.com!usenet.pasdenom.info!gegeweb.org!usenet-fr.net!nerim.net!novso.com!newsfeed.xs4all.nl!newsfeed2.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail
Return-Path <ian.g.kelly@gmail.com>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.003
X-Spam-Evidence '*H*': 0.99; '*S*': 0.00; 'else:': 0.03; '21,': 0.07; 'context': 0.07; 'finally:': 0.07; 'lawrence': 0.09; 'subject:method': 0.09; 'try:': 0.09; 'api': 0.11; 'clauses.': 0.16; 'connect.': 0.16; 'corrupt': 0.16; 'lite': 0.16; 'oserror': 0.16; 'exception': 0.16; 'sat,': 0.16; 'wrote:': 0.18; 'all,': 0.19; 'bit': 0.19; 'feb': 0.22; 'import': 0.22; 'header:In-Reply- To:1': 0.27; 'am,': 0.29; 'raise': 0.29; 'message- id:@mail.gmail.com': 0.30; "i'm": 0.30; 'away.': 0.31; 'raised': 0.31; 'way?': 0.31; 'file': 0.32; 'level.': 0.33; 'subject:the': 0.34; 'could': 0.34; 'subject:with': 0.35; 'connection': 0.35; 'except': 0.35; 'received:google.com': 0.35; 'there': 0.35; 'being': 0.38; 'manager': 0.38; 'to:addr:python-list': 0.38; 'rather': 0.38; 'to:addr:python.org': 0.39; 'soon': 0.63; 'note:': 0.66; 'due': 0.66; 'close': 0.67; '2015': 0.84; 'needed:': 0.84; 'subject:try': 0.84
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-type; bh=AWuMtWUrUbe4q9dxjXmVpPT17n/qKsvPipoW+5kUhx8=; b=hYYmR/ixMp4BRVCLk8eWmKl9cDTW9M194Z7UzN24jMVZ88sDtJnh6udG6gbOzYd2Fc I34N5NdZqYppV7OLyedxx2D8A62y+spQwsBGswxAPUiVTp6NMCGUxj+pr7hlJ36eF2zF kNY7h9NZTeMaAeWmGMkvsgn/c2cb4Ud/whviYaefWhg7SAWgEcRSCgK/qiUG1pxrMFaF 9XaMkaYbRc+Afd4jC0BZDT4FEAE6Ul/TFIEqT8Hz/xBgh7+wHbXkkLwJLZytZVdet9yf guCxz8kp5thfYDCvjAed3V5/Ras+3dgoAq2hEXbox9+Q8aACf1JZil7dliS7vDcKCEwt NolA==
X-Received by 10.70.30.3 with SMTP id o3mr5018998pdh.114.1424531828677; Sat, 21 Feb 2015 07:17:08 -0800 (PST)
MIME-Version 1.0
In-Reply-To <mc9tbf$62d$1@ger.gmane.org>
References <6trfeate2ppvm1mcapgr0g4g2fd3vceab6@4ax.com> <mc9tbf$62d$1@ger.gmane.org>
From Ian Kelly <ian.g.kelly@gmail.com>
Date Sat, 21 Feb 2015 08:16:28 -0700
Subject Re: try pattern for database connection with the close method
To Python <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 <python-list.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Newsgroups comp.lang.python
Message-ID <mailman.18969.1424531832.18130.python-list@python.org> (permalink)
Lines 44
NNTP-Posting-Host 2001:888:2000:d::a6
X-Trace 1424531832 news.xs4all.nl 2855 [2001:888:2000:d::a6]:46095
X-Complaints-To abuse@xs4all.nl
Xref csiph.com comp.lang.python:86046

Show key headers only | View raw


On Sat, Feb 21, 2015 at 5:22 AM, Mark Lawrence <breamoreboy@yahoo.co.uk> wrote:
> On 21/02/2015 02:42, Mario Figueiredo wrote:
>>
>> Hello all,
>>
>> I'm using the following pattern for db access  that requires me to
>> close the connection as soon as it is not needed:
>>
>>          import sqlite3 as lite
>>
>>          try:
>>              db = lite.connect('data.db')
>>          except lite.DatabaseError:
>>              raise OSError('database file corrupt or not found.')
>>          else:
>>              try:
>>                  with db:
>>                      db.execute(sql, parms)
>>              except lite.IntegrityError:
>>                  raise ValueError('invalid data')
>>              finally:
>>                  db.close()
>>
>> Since it's a bit verbose, is there a better way?
>>
>> Note: The user of this API has the whole database functionality
>> abstracted away. Hence the exception channeling in the except clauses.
>>
>
> Use your context manager at the outer level.
>
> import sqlite3 as lite
>
> try:
>     with lite.connect('data.db') as db:
>     try:
>         db.execute(sql, parms)
>     except lite.IntegrityError:
>         raise ValueError('invalid data')
> except lite.DatabaseError:
>     raise OSError('database file corrupt or not found.')

This could result in the OSError being misleadingly raised due to some
DatabaseError raised by the execute rather than the connect.

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

try pattern for database connection with the close method Mario Figueiredo <marfig@gmail.com> - 2015-02-21 03:42 +0100
  Re: try pattern for database connection with the close method Chris Kaynor <ckaynor@zindagigames.com> - 2015-02-20 18:59 -0800
  Re: try pattern for database connection with the close method Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-02-21 12:22 +0000
    Re: try pattern for database connection with the close method Mario Figueiredo <marfig@gmail.com> - 2015-02-22 19:41 +0100
      Re: try pattern for database connection with the close method Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-02-22 19:07 +0000
        Re: try pattern for database connection with the close method Mario Figueiredo <marfig@gmail.com> - 2015-02-23 00:25 +0100
      Re: try pattern for database connection with the close method Skip Montanaro <skip.montanaro@gmail.com> - 2015-02-22 13:15 -0600
        Re: try pattern for database connection with the close method Mario Figueiredo <marfig@gmail.com> - 2015-02-23 00:30 +0100
  Re: try pattern for database connection with the close method Ian Kelly <ian.g.kelly@gmail.com> - 2015-02-21 08:16 -0700
  Re: try pattern for database connection with the close method Peter Otten <__peter__@web.de> - 2015-02-21 16:22 +0100
    Re: try pattern for database connection with the close method Mario Figueiredo <marfig@gmail.com> - 2015-02-23 00:35 +0100
  Re: try pattern for database connection with the close method Peter Otten <__peter__@web.de> - 2015-02-21 16:27 +0100
  Re: try pattern for database connection with the close method Ian Kelly <ian.g.kelly@gmail.com> - 2015-02-21 08:50 -0700
  Re: try pattern for database connection with the close method Peter Otten <__peter__@web.de> - 2015-02-21 18:02 +0100

csiph-web