uppack代入を行う為にfor文にタプルを渡すとき、どんなタプルが必要なるか。

uppack代入を行う為にfor文にタプルを渡すとき、どんなタプルが必要なるか。
for文で定義された個数の要素をもったタプルが必要になる。
たとえば以下のような感じ


#!/usr/bin/env python

tap = ( ('a','b'), ('c','d') )
for k, v in tap:
print('%s: %s'%(k, v))

      • output


a: b
c: d

ただ、渡すタプルの要素が一つだけのときはエラーになってしまう。
例えば以下の通り


#!/usr/bin/env python
tap = ( ('a','b') ) #←タプルの要素が一つになってる
for k, v in tap:
print('%s: %s'%(k, v))

      • output


Traceback (most recent call last):
File "/Users//work/python/for.py", line 4, in
for k, v in tap:
ValueError: need more than 1 value to unpack

どうにも納得がいかない。
たとえばDBからとれたデータが1レコードとかだったらエラーになってしまうのだろうか。