При выполнении большой сортировки и фильтрации можно понравиться некоторые функции помощника.
m = [
['4', '21', '1', '14', '2008-10-24 15:42:58'],
['3', '22', '4', '2somename', '2008-10-24 15:22:03'],
['5', '21', '3', '19', '2008-10-24 15:45:45'],
['6', '21', '1', '1somename', '2008-10-24 15:45:49'],
['7', '22', '3', '2somename', '2008-10-24 15:45:51']
]
# Sort and filter helpers.
sort_on = lambda pos: lambda x: x[pos]
filter_on = lambda pos,val: lambda l: l[pos] == val
# Sort by second column
m = sorted(m, key=sort_on(1))
# Filter on 4th column, where value = '2somename'
m = filter(filter_on(3,'2somename'),m)
Транзакции запускаются / фиксируются для каждого соединения. Если вы не делаете какие-то очень специфические вещи (я не могу придумать пример, где это было бы оправдано, если честно), вам лучше с пулом соединений и подключением для каждого потока.
Если autocommit = 1, то вполне возможно, чтобы несколько потоков использовали одно и то же соединение, при условии, что доступ к соединению синхронизирован. Если autocommit = 0, вам придется контролировать доступ к соединению через какой-то мьютекс, пока не произойдет фиксация.
Если вы абсолютно не ограничены в количестве соединений, которые может иметь ваше приложение, пул соединений может быть более жизнеспособной альтернативой.