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:
filter(lambda db: db[:6] == 'dbname', connstr.split())[0].split('=')[1]
Complete example:
$ 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'"
>>>
Have fun!
Or using list comprehension
>>> dict([[k.strip("'") for k in i.split("=")] for i in connstr.split()])['dbname']
‘rtest’
Lambdas are very cool. I don’t know if you do any JavaScript development, if so check out Eugene’s post on Functional JavaScript with Dojo.
http://lazutkin.com/blog/2008/jan/12/functional-fun-javascript-dojo/
Sean, thanks for complementing. Your snippet is cool!
Jeremy,
Unfortunately, I have not touched JavaScript since 2001 or 2002. I use Python as an utility that supports development in C/C++ langauges. However, thanks for the link, it’s always interesting to learn something new.