LA – Python – Aula 12B – Manipulação com SQLite3

SQLite3

Nativamente, o Python 3.x possui uma biblioteca para importação do SQLite3, para que possamos manipular esse banco de dados de forma muito fácil através da linguagem. É possível fazer desde a criação do banco, estruturas de tabelas e manipulação de dados.

Os exemplos abaixo são muito simples para que possamos fazer o mínimo de manutenção dos mesmos.

Criação do arquivo e tabelas

O arquivo será a base de dados contendo todoas as tabelas que serão necessárias para o seu projeto.

Abaixo temos o código para que seja criado uma conexão, a crição de uma tabela. O diretório onde se encontrará o arquivo deve existir.


import os
import sqlite3

#excluindo o arquivo de banco de dados
print('Excluindo o arquivo de banco de dados.')
file = 'd:\\Sqlite3\data\mydb.sqlite'
os.remove(file)

# Criando a base de dados
connection = sqlite3.connect('d:\\Sqlite3\data\mydb.sqlite')

# Get a cursor object
cursor = connection.cursor()

#Criacao de tabelas
def create_table():
    cursor.execute('CREATE TABLE IF NOT EXISTS cliente \
                   (id integer PRIMARY KEY, \
                    nome varchar(40), \
                    cidade varchar(30), \
                    salario decimal(10,2))')

create_table()

Excluindo dados de um tabela (todos os dados)

Caso voce não recrie toda vez o arquivo de banco, pelo menos é necessário que limpe os dados para este exemplo, para que não haja chave primaria repetida:


#Excluindo todos os dados caso tenha
cursor.execute("DELETE FROM cliente")
connection.commit()

Adicionando dados na tabela

Temos abaixo o exemplo de fazer a adição de dados através de uma lista de tuplas (vários registros por vez) e a outra de se fazer através de uma tupla (um registro por vez)


#Adicionando dados da tabela
#Referencia: https://docs.python.org/2/library/sqlite3.html
def data_entry():
    lista_cli = [(1,'JOSE DA SILVA','JUNDIAI',1500.55),
                (2,'ANA MARIA', 'JUNDIAI', 2300.69),
                (3,'MARIA DE SOUZA', 'CAMPINAS', 3547.02)]
    cursor.executemany("INSERT INTO cliente(id, nome, cidade, salario) \
                    values (?, ?, ?, ?)", lista_cli)

    tupla_cli = (4,'ANTONIO LIMA','VARZEA PAULISTA',1346.22)
    cursor.execute("INSERT INTO cliente(id, nome, cidade, salario) \
                    values (?, ?, ?, ?)", tupla_cli)
    
    connection.commit()

data_entry()

Selecionando dados da tabela retornando 1 linha e várias linhas, e uma linha específica

Abaixo segue códigos fazendo o retorno de uma única linha (a primeira que estiver no dataset, todoas as linhas (usando a função fetchall) e especificando a linha retornada através de um ID.


#Selecionando os dados da tabela
cursor.execute("SELECT id, nome, cidade, salario from cliente")
user1 = cursor.fetchone() #retrieve the first row
print('\nImpressao de campo a campo')
print('Id:', user1[0]) #Imprime o primeiro campo
print('Nome:', user1[1]) #Imprime o segundo campo
print('Cidade:', user1[2]) #Imprime o terceiro campo
print('Salario:', user1[3]) #Imprime o quarto campo

print('\nImpressao de toda as tuplas')
all_rows = cursor.fetchall()
for row in all_rows:
    #row[0] retorna a primeira coluna da query (id), 
    #row[1] retina a segunda coluna (nome)
    print('{0}, {1}, {2}, {3}'.format(row[0], row[1], row[2], row[3]))


print('\nSelecionando um ID especifico')
user_id = 3
cursor.execute("SELECT id, nome, cidade, salario from cliente where id = ?", (user_id,))
user = cursor.fetchone()
print('Id:', user[0]) #Imprime o primeiro campo
print('Nome:', user[1]) #Imprime o segundo campo
print('Cidade:', user[2]) #Imprime o terceiro campo
print('Salario:', user[3]) #Imprime o quarto campo

Excluindo um determinado registro específico

O código abaixo apresenta a exclusão específica de um registro através da chave primária (apesar de não ser obrigatório, é o jeito mais aconselhado)


print('\nExcluindo um ID especifico')
#Referencia: https://www.pythoncentral.io/introduction-to-sqlite-in-python/
user_id = 2
cursor.execute("DELETE from cliente where id = ?", (user_id,))
connection.commit()

print('\nImpressao de toda as tuplas')
#Referencia: https://www.pythoncentral.io/introduction-to-sqlite-in-python/
cursor.execute("SELECT id, nome, cidade, salario from cliente")
all_rows = cursor.fetchall()
for row in all_rows:
    #row[0] retorna a primeira coluna da query (id), 
    #row[1] retina a segunda coluna (nome)
    print('{0}, {1}, {2}, {3}'.format(row[0], row[1], row[2], row[3]))

Atualização de um camnpo específico

Abaixo é apresentado a atualização de um campo específico através de um id (chave primária). Pode ser atualizado mais de um campo na mesma instrução update.


print('\nAtualizacao de um dado especifico')
user_id = 3
nome_update = 'CARLOS ANDRE'
cursor.execute("UPDATE cliente set nome = ? where id = ?", (nome_update, user_id,))

cursor.execute("SELECT id, nome, cidade, salario from cliente where id = ?", (user_id,))
user = cursor.fetchone()
connection.commit()

print('Id:', user[0]) #Imprime o primeiro campo
print('Nome:', user[1]) #Imprime o segundo campo
print('Cidade:', user[2]) #Imprime o terceiro campo
print('Salario:', user[3]) #Imprime o quarto campo
  
#Para fechar a conexao
connection.close()

Referencias:
https://www.pythoncentral.io/introduction-to-sqlite-in-python/
https://sebastianraschka.com/Articles/2014_sqlite_in_python_tutorial.html#creating-a-new-sqlite-database
https://www.sqlite.org/datatype3.html

https://www.tutorialspoint.com/sqlite/sqlite_using_joins.htm

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s