How to write fields with sqlite3 accent via Python?

Asked

Viewed 153 times

4

Hi, guys! I’m making a small program in python and using sqlite3 to save the database. The program is entering, reading and deleting data in the database called "position". I wonder if there’s a way to display accented data when I read it on the console (terminal). See image:

No id 19 - A palavra introdução está codificada.

#JavaScript
# This Python file uses the following encoding: utf-8
import os, sys
import sqlite3

def Inserir():
    ###INSERINDO
# solicitando os dados ao usuário
p_nome = raw_input('Nome: ')
titulo_unicode = p_nome.decode('utf8')
p_criado_em = raw_input('Criado em (yyyy-mm-dd): ')
print (titulo_unicode)

# inserindo dados na tabela
cursor.execute("""
INSERT INTO posicao (nome, criado_em)
VALUES (?,?)
""", (titulo_unicode, p_criado_em))

conn.commit()
def Ler():
    ###LENDO
    # lendo os dados
    cursor.execute("""
    SELECT * FROM posicao;
    """)

    for linha in cursor.fetchall():
        print(linha)

def Excluir():
    id_posicao = int(raw_input('Digite a posicao: '))

    # excluindo um registro da tabela
    cursor.execute("""
    DELETE FROM posicao
    WHERE id = ?
    """, (id_posicao,))

    conn.commit()

    print('Registro excluido com sucesso.')


conn = sqlite3.connect('posicao.db')
#conn.text_factory = str
cursor = conn.cursor()
opcao = 1
while opcao!=4 and opcao!=0:
    print ('Menu:')
    print ('1 - Inserir dados: ')
    print ('2 - Ler dados: ')
    print ('3 - Deletar dados: ')
    print ('0 ou 4 - Sair!!!')
    opcao = int(raw_input('Opção: '))
    if opcao == 1:
        Inserir()
    if opcao == 2:
        Ler()
    if opcao == 3:
        Excluir()

conn.close()

How to do when reading the bank accented words do not appear encoded?

1 answer

1

I solved it! I put the code to print each column of the tuple separately.

def Ler():
    ###LENDO
    # lendo os dados
    cursor.execute("""
    SELECT * FROM posicao;
    """)

    for linha in cursor.fetchall():
        print "|\t",(linha)[0],"\t|",(linha)[1],"\t|", (linha)[2]

inserir a descrição da imagem aqui

Browser other questions tagged

You are not signed in. Login or sign up in order to post.