Mateusz Loskot :: hacking on, working out, living up

Lambda, I love you!

12 Mar 2009 | mloskot

I’m writing a small driver for readint WKT Raster data from RASTER column in PostGIS-enabled database and I want to report name of database I’m connected with. My reader eats connection string, and here I’ve fallen in love with Python lambda.

Given connstr stores connection string to PostgreSQL database in format well-known from libpq, single-line anonymous function can do the whole job:

<code>filter(lambda db: db[:6] == 'dbname', connstr.split())[0].split('=')[1]</code>

Complete example:

<code>$ python
Python 2.5.2 (r252:60911, Oct  5 2008, 19:24:49) 
>>> connstr = "dbname='rtest' host='localhost' user='mloskot'"
>>> filter(lambda db: db[:6] == 'dbname', connstr.split())[0].split('=')[1]
"'rtest'"
>>> connstr = "password='xxx' port=5432 dbname='rtest' host='localhost' user='mloskot'"
>>> filter(lambda db: db[:6] == 'dbname', connstr.split())[0].split('=')[1]
"'rtest'"
>>></code>

Have fun!

Fork me on GitHub