Это фактически одно и то же, потому что простое заключение в круглые скобки не делает его кортежем; вам также понадобится запятая, например: (row[0:2],)
In [1]: row = [1,2,3]
In [2]: row[0:2]
Out[2]: [1, 2]
In [3]: (row[0:2])
Out[3]: [1, 2]
In [4]: (row[0:2],)
Out[4]: ([1, 2],)
Но чтобы ответить на вопрос, я думаю, вы хотели бы задать: в соответствии с документацией DB-API для .execute()
первая альтернатива верна: «Параметры могут быть представлены как sequence или mapping ...»
cur.execute('INSERT INTO tb VALUES (%s, %s);', row[0:2])
Другими словами, вы предоставляете последовательность (список в данном случае); и не последовательность последовательности: кортеж списка, который, опять же, выглядел бы так: (row[0:2],)
; обратите внимание на запятую.