Esse erro indica que value
é uma tupla e não uma string como você poderia esperar. Isso indica um problema com seu aplicativo.
Aqui, o problema é que fetchone()
retorna uma tupla. Você deve mudar desta linha:
value = results.fetchone()
para isso (observe a vírgula após value
):
value, = results.fetchone()
ou isto (não recomendado):
value = results.fetchone()[0]
Mas por que fetchone()
está retornando uma tupla em vez de uma string? Porque você pode SELECT
de várias colunas. Considere, por exemplo, a seguinte instrução SQL:
SELECT a, b, c FROM my_table;
Nesse caso, fetchone()
retornará uma tupla de três.
Escrevendo value, = fetchone()
você está dizendo ao Python que você está esperando uma tupla e deseja que o único item seja colocado em value
. Se você estivesse esperando a tupla de três, você teria usado column_a, column_b, column_c = resulsts.fetchone()
.
Esta é a razão pela qual você deve preferir value,
over fetchone()[0]
.
Dica de bônus: notei que você está usando o Python 3. Nesse caso, você pode escrever:
translation_table = dict.fromkeys(b'+-(),', None)
Acelerando seu código e tornando-o mais limpo.