Banco de Dados com Python

Propaganda
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Database
• Carência de acesso nativo
• Principais banco de dados:
•SQLite
•MySQL
•PostgreSQL
•Interbase/Firebird
• Oracle
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Importando os drivers
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Conexão
#Atribui-se uma variável qualquer à conexão com o banco de dados.
Nos exemplos utilizados nesta apresentação, a variável escolhida foi
‘con’
• MySQL
• SQLite
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Conexão
•PostgreSQL
• Interbase/Firebird
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Conexão
•MS-SQL
• Oracle
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Uso
• Obtendo uma transação (cursor)
#Cursor é um apontador que faz o elo entre o código do Python e o
banco de dados. Para criá-lo, utiliza-se uma variável qualquer que
recebe o nome da sua conexão (no nosso caso, ‘con’) seguida de
.cursor()
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Uso
• Criando banco de dados
#O nosso cursor executa o comando de criação do banco de dados
chamado ‘banco_de_dados’. Atenção: este comando só precisa ser
executado uma única vez, caso contrário o programa retornará um
erro constando que o database ‘banco_de_dados’ já existe.
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Uso
•Criando uma tabela
#Ordenamos que o nosso cursor execute o comando de criar uma
tabela, damos um nome à nossa tabela, especificamos os campos
que ela possui e seus respectivos tipos. Ex.: se ‘campo1’ for um
campo do tipo string, o declaramos campo1 varchar(50), podendo,
assim, armazenar strings de até 50 characters. Obs.: este comando
só precisa ser executado uma única vez. Caso contrário, o programa
retornará um erro.
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Uso
• Inserindo dados no database
#O cursor executa o comando de inserir dados nos campos da nossa
tabela previamente criada. Após VALUES, colocamos os tipos de
variáveis cujo BD irá tratar. Ex.: se estivéssemos falando de três
strings, o correto seria haver %s,%s,%s dentro dos parênteses. Já
valor1, valor2 e valor3 seriam as variáveis que receberam a
entrada do usuário no prompt de comando
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Uso
• Verificando dados no database
#Antes de fazer qualquer verificação no banco de dados, o cursor
precisa selecionar toda a tabela em questão. O comando acima é o
responsável pela realização desta tarefa
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Uso
• Quantidade de resultados
#Em muitos casos é necessário saber quantas linhas há no resultset
do banco de dados. Para realizar este procedimento, uma variável
qualquer recebe ‘nomeDoSeuCursor’.rowcount (no nosso caso, a
variável que funciona como um cursor chamasse ‘cursor’). Um
exemplo bastante simples do número de linhas no resultset seria em
um cadastro de contatos. Cada contato receberia, por exemplo, um
nome, um endereço e um telefone. O número de contatos no BD
seria equivalente ao número de linhas no resultset
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Uso
• Ordenando o conteúdo do BD
#Para receber nossas informações do banco de dados de forma
ordenada, basta mandar o nosso cursor executar o comando acima,
selecionando a tabela desejada e definindo qual será o referencial
do cursor. Ex.: caso o campo desejado for uma string, o cursor
receberá os dados ordenados em ordem alfabética com relação ao
campo desejado
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Uso
• Deletando linha do resultset do BD
#Para deletar alguma linha do resultset do banco de dados, o
comando acima é necessário. O cursor exclui da tabela toda a linha
que contenha o valor da entrada do usuário igual a um
determinado campo. Obs.: a interrogação no código representa o
tipo da variável. Ex.: sendo uma string, ‘%s’ é a maneira correta de
representá-la
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Uso
• Recebendo resultados
#Para receber os resultados do database, criamos qualquer variável
que recebe o nome do nosso cursor seguido de .fetchone() (que recebe
um único resultado), .fetchall() (que recebe todos os resultados) etc.
Obs.: os resultados em questão são recebidos como tuplas
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Uso
• Salvando as informações
#Toda vez que alguma alteração for feita no banco de dados, é
necessário salvá-lo para que nenhum dado seja perdido. Este
comando é feito colocando o nome da nossa variável utilizada para
fazer a conexão no banco de dados seguida de um .commit(). No
nosso caso, a variável que realizou esta conexão foi ‘con’
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Uso
• Fechando cursor
#Quando um cursor não for mais necessário, é uma boa prática
encerrá-lo. Para isto, basta colocar o nome do seu cursor seguido de
.close(). Obs.: esta função precisa ser realizada para cada cursor do
seu programa
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Uso
• Encerrando conexão com o banco de dados
#Antes de fechar o seu programa que utiliza algum banco de dados,
é interessante que a conexão com o seu BD seja encerrada. Para
fazer isto, basta inserir no seu código a variável que recebeu a
conexão com o database seguida de .close(). Obs.: no nosso caso,
esta variável é ‘con’
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Python + MySQL
• Servidor (banco de dados propriamente dito)
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Python + MySQL
• Módulo (elo entre a linguagem de programação e o banco de dados)
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Python + MySQL
• ATENÇÃO!
• Erro no módulo do Python 2.6
As bibliotecas libguide40.dll e libmmd.dll não estão incluídas no pacote
Download links:
• libguide40.dll
http://www.dlldll.com/libguide40.dll_download.html
• libmmd.dll
http://www.dlldll.com/libmmd.dll_download.html
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Python + MySQL
• ATENÇÃO!
Vejam o diretório
onde elas devem
ser inseridas
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Python + MySQL
• ATENÇÃO!
• Erro no módulo do Python 2.6
Mensagem de erro do Python 2.6 sem as bibliotecas citadas anteriormente
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Python + MySQL
• ATENÇÃO!
• Erro no módulo do Python 2.6
Warning após a inclusão das bibliotecas
#Este warning não impede o bom funcionamento do Python 2.6 em
conjunto com o MySQL
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Python + MySQL
• More downloads
• MySQL Server 5.1
http://dev.mysql.com/downloads/mysql/5.1.html
• Módulo do Python 2.5
http://sourceforge.net/projects/mysql-python
• Módulo do Python 2.6
http://www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Python + MySQL
Caso haja alguma sugestão ou dúvida, entrar em contato com os criadores da
apresentação:
Daniel Filype ([email protected])
Márcio Sérgio ([email protected])
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Python + MySQL
Daniel Filype Silva Barreto
Márcio Sérgio Soares Austregésilo
Download