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