🤔 Para Refletir :
"Fazer um jogo é sempre muito mais difícil do que jogar um jogo..."
- Rafael_Sol_MAKER

Dúvida com sqlite3 em python.

xXPGXx

Novato
Membro
Membro
Juntou-se
17 de Fevereiro de 2021
Postagens
3
Bravecoins
10
Bom dia, gostaria de tirar uma dúvida, fiz um algoritmo em python que armazena um conjunto de números de uma lista em um banco de dados sql, mas por algum motivo quando eu imprimo a lista aparece dessa forma: [(1,) (2,) (3,) ...] com aquela vírgula como se houvesse um valor nulo, uma tupla com o valor que eu importei mais o valor nulo, ai baixei o sqlite estudio e vi que lá só existiam os números sozinhos mesmo, sem essa vírgula, uns me dizem que é coisa da linguagem python, outros dizem que tem como consertar isso, eu gostaria de saber como, pq já tentei todo tipo de entrada e formatação pra ver se deixava tudo bonitinho na hora de imprimir e foi só a derrota kkkk

teste01.png
teste02.png
teste03.png
 
Não é um valor nulo, essa vírgula simplesmente indica que o valor sendo mostrado é uma tupla com um único elemento.

Na hora de fazer o parse do programa, sem essa vírgula o Python não tem como diferenciar parênteses normais (usados pra garantir a precedência das operações) de parênteses delimitando tuplas com um único elemento.
(x) é equivalente a x, mas (x,) representa uma tupla com um único elemento, que é x. Na hora de printar, por convenção, ele mantém essa formatação.

Se você quiser printar isso de forma mais elegante, dá pra fazer assim:

Python:
rows = cursor.fetchall()
print([x for (x,) in rows])

Dessa forma o Python faz pattern matching nas tuplas e extrai o elemento dentro delas.
 
Não é um valor nulo, essa vírgula simplesmente indica que o valor sendo mostrado é uma tupla com um único elemento.

Na hora de fazer o parse do programa, sem essa vírgula o Python não tem como diferenciar parênteses normais (usados pra garantir a precedência das operações) de parênteses delimitando tuplas com um único elemento.
(x) é equivalente a x, mas (x,) representa uma tupla com um único elemento, que é x. Na hora de printar, por convenção, ele mantém essa formatação.

Se você quiser printar isso de forma mais elegante, dá pra fazer assim:

Python:
rows = cursor.fetchall()
print([x for (x,) in rows])

Dessa forma o Python faz pattern matching nas tuplas e extrai o elemento dentro delas.
olá, obrigado pela ajuda, mas optei seguir da seguinte forma:
rows = comando.fetchall()
for row in rows:
for item in row:
print(item)
assim ele vai me retornar os numeros separados, mas vou guardar sua explicação pra estudo, foi a melhor que encontrei <3
 
Voltar
Topo Inferior