Database Carncia de acesso nativo Principais banco de dados: SQLite MySQL PostgreSQL Interbase/Firebird Oracle Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Importando os drivers Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Conexo MySQL #Atribui-se uma varivel qualquer conexo com o banco de dados. Nos exemplos utilizados nesta apresentao, a varivel escolhida foi con SQLite Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Conexo PostgreSQL Interbase/Firebird Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Conexo MS-SQL Oracle Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Uso Obtendo uma transao (cursor) #Cursor um apontador que faz o elo entre o cdigo do Python e o banco de dados. Para cri-lo, utiliza-se uma varivel qualquer que recebe o nome da sua conexo (no nosso caso, con) seguida de .cursor() Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Uso Criando banco de dados #O nosso cursor executa o comando de criao do banco de dados chamado banco_de_dados. Ateno: este comando s precisa ser executado uma nica vez, caso contrrio o programa retornar um erro constando que o database banco_de_dados j existe. Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo 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 contrrio, o programa retornar um erro. Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Uso Inserindo dados no database #O cursor executa o comando de inserir dados nos campos da nossa tabela previamente criada. Aps VALUES, colocamos os tipos de variveis cujo BD ir tratar. Ex.: se estivssemos falando de trs strings, o correto seria haver %s,%s,%s dentro dos parnteses. J valor1, valor2 e valor3 seriam as variveis que receberam a entrada do usurio no prompt de comando Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Uso Verificando dados no database #Antes de fazer qualquer verificao no banco de dados, o cursor precisa selecionar toda a tabela em questo. O comando acima o responsvel pela realizao desta tarefa Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Uso Quantidade de resultados #Em muitos casos necessrio saber quantas linhas h no resultset do banco de dados. Para realizar este procedimento, uma varivel qualquer recebe nomeDoSeuCursor.rowcount (no nosso caso, a varivel que funciona como um cursor chamasse cursor). Um exemplo bastante simples do nmero de linhas no resultset seria em um cadastro de contatos. Cada contato receberia, por exemplo, um nome, um endereo e um telefone. O nmero de contatos no BD seria equivalente ao nmero de linhas no resultset Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Uso Ordenando o contedo do BD #Para receber nossas informaes 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 alfabtica com relao ao campo desejado Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Uso Deletando linha do resultset do BD #Para deletar alguma linha do resultset do banco de dados, o comando acima necessrio. O cursor exclui da tabela toda a linha que contenha o valor da entrada do usurio igual a um determinado campo. Obs.: a interrogao no cdigo representa o tipo da varivel. Ex.: sendo uma string, %s a maneira correta de represent-la Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Uso Recebendo resultados #Para receber os resultados do database, criamos qualquer varivel 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 questo so recebidos como tuplas Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Uso Salvando as informaes #Toda vez que alguma alterao for feita no banco de dados, necessrio salv-lo para que nenhum dado seja perdido. Este comando feito colocando o nome da nossa varivel utilizada para fazer a conexo no banco de dados seguida de um .commit(). No nosso caso, a varivel que realizou esta conexo foi con Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Uso Fechando cursor #Quando um cursor no for mais necessrio, uma boa prtica encerr-lo. Para isto, basta colocar o nome do seu cursor seguido de .close(). Obs.: esta funo precisa ser realizada para cada cursor do seu programa Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Uso Encerrando conexo com o banco de dados #Antes de fechar o seu programa que utiliza algum banco de dados, interessante que a conexo com o seu BD seja encerrada. Para fazer isto, basta inserir no seu cdigo a varivel que recebeu a conexo com o database seguida de .close(). Obs.: no nosso caso, esta varivel con Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Python + MySQL Servidor (banco de dados propriamente dito) Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Mdulo (elo entre a linguagem de programao e o banco de dados) Python + MySQL Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo ATENO! Erro no mdulo do Python 2.6 As bibliotecas libguide40.dll e libmmd.dll no esto includas no pacote Python + MySQL As bibliotecas libguide40.dll e libmmd.dll no esto includas 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 Mrcio Srgio Soares Austregsilo ATENO! Vejam o diretrio onde elas devem ser inseridas Python + MySQL Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo ATENO! Erro no mdulo do Python 2.6 Python + MySQL Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Mensagem de erro do Python 2.6 sem as bibliotecas citadas anteriormente ATENO! Erro no mdulo do Python 2.6 Python + MySQL Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Warning aps a incluso das bibliotecas #Este warning no impede o bom funcionamento do Python 2.6 em conjunto com o MySQL More downloads MySQL Server 5.1 http://dev.mysql.com/downloads/mysql/5.1.html Mdulo do Python 2.5 http://sourceforge.net/projects/mysql-python Python + MySQL http://sourceforge.net/projects/mysql-python Mdulo do Python 2.6 http://www.technicalbard.com/files/MySQL-python-1.2.2.win32-py2.6.exe Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Python + MySQL Caso haja alguma sugesto ou dvida, entrar em contato com os criadores da apresentao: Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo Daniel Filype (danielfsbarreto@gmail.com) Mrcio Srgio (marcio_se@hotmail.com) Python + MySQL Daniel Filype Silva Barreto Mrcio Srgio Soares Austregsilo