Skip to main content

Python: Append items to a tuple

Tuples, tuples, tuples.  Thats fun to say.  We've all used them, but dynamic assembly of them? Now this is cool -- and something I never needed to do until today of course.  Appending values to a list, or a dict is easy and well documented, but less common is the need to append or dynamically assemble a tuple.  Lets look at a Pythonic way to do that.

But why?  (You should always ask this) In my use-case, I was dynamically assembling an sql query.  based on the existence of a form variable, i needed to add a clause to my sql, which I am doing classic pythonic replacement on using a tuple of values.
Here is the deal -- when you set your first value, simply put it in parens with a trailing comma like so:

myTuple = ('first item',)
Notice the trailing comma!

Now to add items to it, assign the tuple with the + operator:
myTuple = myTuple + ('second item',)
Again, notice the trailing comma!  This works in sequential code or loops.

Now if you output your Tuple, you get:
>>> myTuple 
('first item', 'second item')

So for my use case, then I can use it in a SQL statement like so:

sql = "SELECT * from table WHERE col1=%s and col2=%s"
db.engine.execute(sql, myTuple)


There you have it.  Not difficult at all, but I never came across this before, so I am blogging about it to a) help others, and b) have a place to look it up when I forgot.

Ciao

Popular posts from this blog

Installing python 3.4.x on OSX El Capitan

I love "brew" package manager, but sometimes being too progressive breaks things.  I have several python apps that I maintain that get deployed to AWS using Elastic Beanstalk.  AWS eb can deploy with python 2.7 or 3.4.  Any recent 'brew install python3" will get 3.5.1. #annoying

Making Macbook Air with 128GB SSD usable with Bootcamp

I recently got a new Macbook Air 11" (the 2012 version) and loaded it with goodies like 8GB ram and 2GHz Core i7.  What I DIDN'T upgrade was the internal SSD.  My config came with 128GB SSD and I refused to pay $300+ to upgrade it to 256GB.  Yeah I know, some call me cheap, but SSds cost $75-$150 for 240GB, so adding another 128GB for $300 seemed way too steep for me.  I figured "ok, I'm going to make 128G work!"

Here is the story of how that went...

Getting Started with OpenVAS on CentOS - an open source vulnerability scanner

The Open Vulnerability Assessment System (OpenVAS) is a framework of several services and tools offering a comprehensive and powerful vulnerability scanning and vulnerability management solution. (Taken from the OpenVAS website, which is at http://www.openvas.org/ )





This blog entry will introduce OpenVAS version 3.1, walk through installation on CentOS and is intended as a "getting started" guide. I'll also do a guide for installing on Ubuntu later.