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


Groups > comp.lang.python > #60693

Re: Python and PEP8 - Recommendations on breaking up long lines?

From Roy Smith <roy@panix.com>
Newsgroups comp.lang.python
Subject Re: Python and PEP8 - Recommendations on breaking up long lines?
Date 2013-11-28 10:08 -0500
Organization PANIX Public Access Internet and UNIX, NYC
Message-ID <roy-DCC2D1.10083028112013@news.panix.com> (permalink)
References <a98cfbef-bc48-41e8-98de-e616f201ffbe@googlegroups.com> <34479463-b8a8-4417-9989-cd29369461c2@googlegroups.com>

Show all headers | View raw


In article <34479463-b8a8-4417-9989-cd29369461c2@googlegroups.com>,
 Victor Hooi <victorhooi@gmail.com> wrote:

>     cur.executemany("INSERT INTO foobar_foobar_files VALUES (?)",
>                     [[os.path.relpath(filename, foobar_input_folder)] for 
>                     filename in filenames])

I don't often write raw SQL embedded in Python.  I'm much more likely to 
use some sort of ORM layer.  But, if I were doing this, I would break it 
up something like:



There's a few different strategies I employed there.  My first thought 
was a logical break of computing the list of pathnames vs. inserting 
them into the database.  That got me here:

    paths = [[os.path.relpath(filename, foobar_input_folder)] \
      for filename in filenames]
    cur.executemany("INSERT INTO foobar_foobar_files VALUES (?)",
                    paths)

I wouldn't have actually broken the first line with the backslash, but 
I'm doing that to appease my news posting software.

My next step would be some simple textual changes; I'd get rid of the 
overly-line variable names.  In general, I don't like very short 
variable names, but I'm OK with them as long as the scope is very small, 
as it is here:

    paths = [[os.path.relpath(fn, folder)] for fn in filenames]
    cur.executemany("INSERT INTO foobar_foobar_files VALUES (?)",
                    paths)

I'd probably factor out the double lookup of os.path.relpath.  I think 
this is easier to read:

    relpath = os.path.relpath
    paths = [[relpath(fn, folder)] for fn in filenames]
    cur.executemany("INSERT INTO foobar_foobar_files VALUES (?)",
                    paths)

If filenames was a very long list, it would also be a little bit faster 
to execute, but that's such a small factor as to probably be 
unmeasurable.

And, finally, I'd probably move one set of square brackets down into the 
SQL statement.  It really makes more sense there anyway; the bundling up 
of the arguments into a sequence is more a part of the database API than 
it is inherent to the data.

    relpath = os.path.relpath
    paths = [relpath(fn, foobar_input_folder) for fn in filenames]
    cur.executemany("INSERT INTO foobar_foobar_files VALUES (?)",
                    [paths])

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


Thread

Python and PEP8 - Recommendations on breaking up long lines? Victor Hooi <victorhooi@gmail.com> - 2013-11-27 17:57 -0800
  Re: Python and PEP8 - Recommendations on breaking up long lines? Victor Hooi <victorhooi@gmail.com> - 2013-11-27 18:03 -0800
    Re: Python and PEP8 - Recommendations on breaking up long lines? Ben Finney <ben+python@benfinney.id.au> - 2013-11-28 13:55 +1100
    Re: Python and PEP8 - Recommendations on breaking up long lines? Terry Reedy <tjreedy@udel.edu> - 2013-11-27 22:03 -0500
    Re: Python and PEP8 - Recommendations on breaking up long lines? Ned Batchelder <ned@nedbatchelder.com> - 2013-11-27 22:05 -0500
    Re: Python and PEP8 - Recommendations on breaking up long lines? Jussi Piitulainen <jpiitula@ling.helsinki.fi> - 2013-11-28 08:12 +0200
      Re: Python and PEP8 - Recommendations on breaking up long lines? Chris Angelico <rosuav@gmail.com> - 2013-11-28 17:22 +1100
    Re: Python and PEP8 - Recommendations on breaking up long lines? Roy Smith <roy@panix.com> - 2013-11-28 10:08 -0500
  Re: Python and PEP8 - Recommendations on breaking up long lines? Ben Finney <ben+python@benfinney.id.au> - 2013-11-28 13:47 +1100
    Re: Python and PEP8 - Recommendations on breaking up long lines? Steven D'Aprano <steve@pearwood.info> - 2013-11-28 03:02 +0000
      Re: Python and PEP8 - Recommendations on breaking up long lines? Ben Finney <ben+python@benfinney.id.au> - 2013-11-28 14:14 +1100
  Re: Python and PEP8 - Recommendations on breaking up long lines? Terry Reedy <tjreedy@udel.edu> - 2013-11-27 21:55 -0500
  Re: Python and PEP8 - Recommendations on breaking up long lines? Ned Batchelder <ned@nedbatchelder.com> - 2013-11-27 21:59 -0500
    Re: Python and PEP8 - Recommendations on breaking up long lines? Steven D'Aprano <steve@pearwood.info> - 2013-11-28 03:58 +0000
      Re: Python and PEP8 - Recommendations on breaking up long lines? Tim Chase <python.list@tim.thechases.com> - 2013-11-28 08:04 -0600
      Re: Python and PEP8 - Recommendations on breaking up long lines? Chris Angelico <rosuav@gmail.com> - 2013-11-29 01:21 +1100
      Re: Python and PEP8 - Recommendations on breaking up long lines? Ned Batchelder <ned@nedbatchelder.com> - 2013-11-28 12:26 -0500
  Re: Python and PEP8 - Recommendations on breaking up long lines? Ben Finney <ben+python@benfinney.id.au> - 2013-11-28 14:06 +1100
  Re: Python and PEP8 - Recommendations on breaking up long lines? Neil Cerutti <mr.cerutti@gmail.com> - 2013-11-27 22:09 -0500
  Re: Python and PEP8 - Recommendations on breaking up long lines? Ethan Furman <ethan@stoneleaf.us> - 2013-11-27 19:15 -0800
  Re: Python and PEP8 - Recommendations on breaking up long lines? Steven D'Aprano <steve@pearwood.info> - 2013-11-28 03:57 +0000
    Re: Python and PEP8 - Recommendations on breaking up long lines? Steven D'Aprano <steve@pearwood.info> - 2013-11-28 04:03 +0000
  Re: Python and PEP8 - Recommendations on breaking up long lines? MRAB <python@mrabarnett.plus.com> - 2013-11-28 12:43 +0000
  Re: Python and PEP8 - Recommendations on breaking up long lines? Walter Hurry <walterhurry@lavabit.com> - 2013-11-28 17:38 +0000
  Re: Python and PEP8 - Recommendations on breaking up long lines? Roel Schroeven <roel@roelschroeven.net> - 2013-11-28 19:37 +0100
  Re: Python and PEP8 - Recommendations on breaking up long lines? Nick Mellor <thebalancepro@gmail.com> - 2013-12-04 17:47 -0800

csiph-web