Python Acessando o Banco de Dados MySQL



Documentos relacionados
Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

PHP INTEGRAÇÃO COM MYSQL PARTE 1

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Prof. Carlos Majer Aplicações Corporativas UNICID

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Principais Comandos SQL Usados no MySql

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

Manipulação de Banco de Dados com Java 1. Objetivos

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

Prof. Omero, pág. 63. Banco de Dados InterBase.

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET. Programação para Internet I

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

C# - Conexão com MySQL

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

SQL. Autor: Renata Viegas

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

Segurança de Acesso a Banco de Dados no MS SQL Server

No Fedora, instalamos os pacotes "mysql" e "mysql-server", usando o yum:

Daniel Filype Silva Barreto Márcio Sérgio Soares Austregésilo

A linguagem SQL

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS ARMAZENAMENTO EM BD NO DM. Prof. Angelo Augusto Frozza, M.Sc.

Conteúdo O que é?... 4 Histórico... 4 Onde Baixar?... 4 Diferença entre Firebird e o Interbase... 4 Como instalar?... 4 Instalando o Ibexpert...

Modelo Cliente/Servidor Por HIARLY ALVES

Linguagem SQL Sub-linguagem DDL

MySQL. Prof. César Melo. com a ajuda de vários

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

INSTALANDO E CONFIGURANDO O MY SQL

Introdução ao Sistema. Características

Banco de Dados Oracle 10g

Integrando Java com Banco de Dados

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

Programação Orientada a Objetos JDBC Java Database Connectivity

SQL Server Ferramenta de administração. SQL Server Management Studio. 1º passo conectar ao banco de dados 2ª Query (consulta) usando SQL

Instalando o WordPress em localhost

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Lógica de Programação

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

Sistemas de Banco de Dados

Fundamentos dos Sistemas de Informação Organização de Dados e Informações

Banco de Dados SQL (Structured Query Language) Ana Paula Toome Wauke

Controle de transações em SQL

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

INSTALAÇÃO DO MICROSOFT WINDOWS SHAREPOINT SERVICES 2.0

PgAdmin. O pgadmin é um software gráfico para administração do SGBD PostgreSQL disponível para Windows e UNIX.

JDBC Java Database Connectivity

Leonardo Gresta Paulino Murta

Banco de Dados. Maurício Edgar Stivanello

Iniciando o MySQL Query Brower

Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Introdução a Banco de Dados

1 R$ 50,00 R$ 50,00 reusable object-oriented software 2 Utilizando UML e padrões: uma

CONCORRÊNCIA. 1. Introdução. Recursos exclusivos. Não necessita controle. Abundância de recursos compartilhados. Controle necessário mas mínimo

Projeto de Banco de Dados

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Guia de instalação para ambiente de Desenvolvimento LINUX

MANUAL DE UTILIZAÇÃO Aplicativo Controle de Estoque Desktop

SQL Structured Query Language

Persistência de Classes em Tabelas de Banco de Dados

Programação SQL. Introdução

Manual de Atualização DDBroker

Manipulação de Dados em PHP (Visualizar, Inserir, Atualizar e Excluir) Parte 2

MANUAL DO ANIMAIL Terti Software

Fox Gerenciador de Sistemas

SuperStore. Sistema para Automação de Óticas. MANUAL DO USUÁRIO (Módulo Estoque)

MANUAL DE UTILIZAÇÃO Aplicativo Controle de Estoque Mobile

MULTIACERVO - VERSÃO 17.*

Aula 1 Acesso a Banco de Dados


Microsoft Access XP Módulo Um

Omega Tecnologia Manual Omega Hosting

Manual Integra S_Line

Como atualizar o arquivo de licença do HSC ISS Free

Transações Seguras em Bancos de Dados (MySQL)

Sensor de temperatura Parte 5 Cleiton Bueno Preparando o ambiente do Banco de dados Mysql

Noções de. Microsoft SQL Server. Microsoft SQL Server

Manual do usuário. Softcall Java. versão 1.0.5

INSTALAÇÃO OASIS + WAMP SERVER NO AMBIENTE WINDOWS

Java com Banco de Dados Posgree

Tradutor: Douglas Soares de Andrade dsa em unilestemg ponto br Site Original:

Curso PHP Aula 08. Bruno Falcão

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia

Aula 1: Noção Básica e Criação de Tabelas.

Instalação rápida do Expresso

Introdução ao SQL. Aécio Costa

Programação para Android. Aula 08: Persistência de dados SQL

Data Transformation Services (DTS) por Anderson Ferreira Souza

Transcrição:

Python Acessando o Banco de Dados MySQL ANTONIO SÉRGIO NOGUEIRA PRESIDENTE PRUDENTE SP 2009 1

Sumário 1. Introdução...3 2. Interface MySQL...3 3.Instalando o MySQLdb...3 4.Verificando se o MySQL está instalado...4 5.Vamos nos conectar ao banco de dados...4 6. Criando o banco de dados e as tabelas no MySQL...4 7. Conectando-se ao banco de dados com o Python...5 8. Criando as tabelas do banco de dados...5 9. Inserindo dados nas tabelas...6 10. Executando passagem de parâmetro diretamente...8 11. Operação de Leitua (READ)...9 12. Operação de atualização ou alteração de dados...10 13. Operação de exclusão de registros...11 14. Manipulando Erros...12 2

1. Introdução: O Python permite a você acessar os bancos de dados mais comuns do mercado, para isto temos um padrão de interface que é DB-API, a maioria das interfaces de banco de dados adere a este padrão. Podemos escolher o Banco de Dados que mais nos agrada já que a Python Database API possui uma grande quantidade de servidores de banco de dados são eles: GadFly msql MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase Você deve carregar o módulo DB API de cada banco de dado que você necessita acessar, no nosso caso vamos a carregar o módulo do Database Mysql. Este Módulo nos permitirá acessar o banco de dados através de estruturas Python. Neste API encontramos comandos para abrir uma conexão, emitir comandos SQL, acessar procedimentos armazenados e fechar conexão. 2.Interface MySQLdb é a interface API para conexão com o servidor de banco de dados MySQL no Python, ela é construída em cima do MySQL API C e implementa a versão Python Database API v2.0. O programa MySQL (R) é um servidor robusto de bancos de dados SQL (Structured Query Language Linguagem Estruturada para Pesquisas) muito rápido, multi-tarefa e multi-usuário. O Servidor MySQL pode ser usado em sistemas de produção com alta carga e missão crítica bem como pode ser embutido em programa de uso em massa. MySQL é uma marca registrada da MySQL AB. O programa MySQL é de Licença Dupla. Os usuários podem escolher entre usar o programa MySQL como um produto Open Source/Free Software sob os termos da GNU General Public License (http://www.fsf.org/licenses/) ou podem comprar uma licença comercial padrão da MySQL AB. O site web do MySQL (http://www.mysql.com/) dispõe das últimas informações sobre o programa MySQL. 3. Instalando o MySQLdb para instalar o módulo adote o seguinte procedimento: Instale o MySql ( Servidor de Banco de Dados), você tem que ter privilégio de administrador. Vá até o seguinte link: http://sourceforge.net/projects/mysql-python Escolha a opção download. Escolha o pacote mysql-python. Agora escolha o pacote MySQL-python-1.2.2.win32-py2.5.exe. (Vamos usar o Python 2.5 3

Pronto agora é só fazer o download. Feito o download clique em cima do arquivo é instale-o no diretório do Python 2.5. 4. Verificando se MySQLdb está instalado Abra o IDLE e no shell digite o seguinte comando: >>> >>> Se houver erro o shell emite uma informação, senão aparece o cursor >>>. 5. Vamos nos conectar ao Banco de Dados antes de fazermos a conexão vamos executar alguns comandos no mysql para criarmos: Base de dados A tabela de dados Para entender mais sobre banco de dados veja: Manual de Referência do MySQL : http://downloads.mysql.com/docs/refman-4.1-pt.pdf 6. Criando o banco de dados e as tabelas no MySQL: mostraremos passo a passo a criação de um banco de dados no MySQL. Acesse o MySQL: acesse o MySQL Command Line Client Forneça a Senha: aparecerá Enter Password: SENHA ( você vai acessá-lo como root administrador para não ter restrições de acesso). Criando um banco de dados: No MySQL os bancos de dados são implementados como diretórios contendo arquivos que correspondem a tabelas do banco de dados. Como ainda não existem tabelas no banco de dados criado, este comando somente cria um subdiretório no diretório de dados do MySQL. Ocorrerá um erro se o banco de dados já existir ou se você não tiver o privilégio apropriado. CREATE DATABASE testedb; Acessando o Banco de Dados: USE Identifica o banco de dados default, o qual será utilizado quando as referências a uma tabela não especificarem explicitamente o nome do banco de dados. USE testedb; Criando as tabelas de dados do banco: Criaremos a tabela Empregado com os campos Nome, Idade, Sexo e Salário. CREATE TABLE empregado (nome varchar(30) not null primary key, idade int, sexo char(1), salario int); Verifique o que criou: digite os comandos para verificar as tabelas e as colunas: SHOW TABLES; (tabelas do banco de dados) SHOW COLUMNS FROM empregado; (colunas da tabela) 4

7. Conectando-se ao banco de dados com o Python: Vamos primeiro nos conectar ao banco de dados para executarmos os comandos. Exemplo: # file: conectardb.py # Abre o banco de dados # prepara um objeto cursor usando método cursor() # executa SQL usando método execute() cursor.execute("select VERSION()") # Busca uma linha usando método fetchone() data = cursor.fetchone() print "Database version : %s " % data # desconectando Você verá a seguinte mensagem: Database version : 5.1.32-community Ao estabelecer a conexão com a fonte de dados um objeto de Conexão é retornado e salvo em db ou senão ele é setado para None. O objeto db é usado para criar um objeto tipo cursor o qual é usado para executar queries. Finalmente encerramos a conexão e liberamos os recursos. 8. Criando as tabelas do banco de dados: Uma vez que estabelecemos a conexão, estamos preparados para criar e gravar tabelas através do método execute do cursor criado. Exemplo: # file:criatabela.py 5

# Abre conexão Python # prepara o objeto cursor # Elimina tabela se ela existir usando o comando SQL através do método execute. method. cursor.execute("drop TABLE IF EXISTS EMPREGADO") # Cria a tabela requerida sql = """CREATE TABLE EMPREGADO ( NOME CHAR(30) NOT NULL, IDADE INT, SEXO CHAR(1), SALARIO FLOAT )""" cursor.execute(sql) # desconectando Esta mensagem aparece se a tabela não existir. Warning (from warnings module): File "C:/Python25/criatabela.py", line 13 cursor.execute("drop TABLE IF EXISTS EMPREGADOS") Warning: Unknown table 'empregados' 9. Inserindo dados nas tabelas: uma vez criada a tabela podemos agora inserir dados nela através do comando SQL INSERT, que criará um registro na tabela empregado. Exemplo: #file:inseredado.py # ABRE CONEXÃO # prepara metodo cursor 6

# Prepara comando SQL sql = """INSERT INTO EMPREGADO(NOME, IDADE, SALARIO, SEXO) VALUES ('Sergio', 22, 2000,'M')""" try: # Executa comando SQL cursor.execute(sql) # Faz as mudanças no database db.commit() except: #Desfaz mudanças na tabela em caso de erro db.rollback() # desconecta Outro exemplo usando agora comando SQL Insert dinâmico. #file: inseredadod.py # Abre conexão com o banco de dados # prepare o objeto curso com o método cursor. # Prepare comando SQL para inserir registro no BD. sql = "INSERT INTO EMPREGADO(NOME, \ IDADE, SEXO, SALARIO) \ VALUES ('%s', '%d', '%c', '%d' )" % \ ('MARCOS', 30, 'M', 1000) try: # Execute comando SQL cursor.execute(sql) # EfetuarPerpetar as mudanças no database db.commit() 7

except: # desfazer em caso de erro db.rollback() # desconecta 10. Executando passagem de parâmetro diretamente o exemplo a seguir é uma outra forma de executar o programa e passar parâmetros diretamente. Exemplo: #file: inseredadod1.py # Abre conexão com o banco de dados # prepare o objeto curso com o método cursor. nome='antonio' idade=34 sexo='m' salario=1350 try: # executa sql cursor.execute('insert into empregado values("%s","%d","%c","%d")'% (nome,idade,sexo,salario)) # Efetuar as mudanças no database db.commit() except: # desfazer em caso de erro db.rollback() # desconecta 8

11. Operação de Leitua (READ): ler um banco de dados significa buscar alguma informação útil no banco de dados. Após a conexão ser estabelecida, nós estamos prontos para pesquisar no banco de dados. Nós podemos procurar um único registro através do método fetchone() ou múltiplos registros através do método fetchall(). fetchone() - este método encontra a próxima linha do conjunto de uma busca. Um objeto é retornado quando o objeto cursor é usado na busca em uma tabela. fetchall() - este método busca todas as linha de um conjunto de uma busca. Se algumas linhas já foram extraídas, o método retorna as linhas restantes. rowcount() - método de apenas leitura e retorna o número de linhas afetadas pelo método execute(). Exemplo: este exemplo retorna todos os registros da tabela empregado que tenham salário maior que 1000. # file:ledadosdb.py # abre conexão # objeto cursor # SQL de busca de dados. sql = "SELECT * FROM EMPREGADO \ WHERE SALARIO > '%d'" % (1000) try: # Executa SQL cursor.execute(sql) # Busca todas as linhas de uma tabela results = cursor.fetchall() for row in results: fname = row[0] age = row[1] sex = row[2] income = row[3] # Imprime resultado print "Nome=%s,Idade=%d,Sexo=%s,Salario=%d" % \ 9

(fname, age, sex, income ) except: print "Erro na busca." # desconecta Resultado da pesquisa na tabela cadastrada: Nome=Sergio,Idade=22,Sexo=M,Salario=2000 Nome=Antonio,Idade=34,Sexo=M,Salario=1350 12. Operação de atualização ou alteração de dados: a operação UPDATE sobre um banco de dado significa atualizar ou modificar um ou mais registros já disponíveis no banco de dados. O procedimento seguinte atualizará todos os registros que tenham sexo 'M'. Nós iremos incrementar a idade de todos as pessoas de sexo M. Exemplo: # file:ledadosdb.py # abre conexão # objeto cursor # SQL de busca de dados. sql = "SELECT * FROM EMPREGADO \ WHERE SALARIO > '%d'" % (1000) try: # Executa SQL cursor.execute(sql) # Busca todas as linhas de uma tabela results = cursor.fetchall() for row in results: fname = row[0] 10

age = row[1] sex = row[2] income = row[3] # Imprime resultado print "Nome=%s,Idade=%d,Sexo=%s,Salario=%d" % \ (fname, age, sex, income ) except: print "Erro na busca." # desconecta Resultado: Nome=Sergio,Idade=23,Sexo=M,Salario=2000 Nome=Antonio,Idade=35,Sexo=M,Salario=1350 13. Operação de exclusão de registros: quando queremos apagar alguns registros usamos o operação DELETE. O programa abaixo apaga todos os registros de empregado onde a idade é menor do que 25. Exemplo: # file: apagadb.py # abre conexão # prepare o objeto cursor # Prepare o comando SQL sql = "DELETE FROM EMPREGADO WHERE IDADE < '%d'" % (25) try: # Executa comando SQL cursor.execute(sql) 11

# Efetua modificação do banco db.commit() except: # Desfaz a modificação db.rollback() # desconecta Quando falamos em banco de dados, falamos em consistência dos dados e para que isso aconteça temos que ter as seguintes propriedades: atomicidade, consistência, isolação, durabilidade. Para que isto aconteça temos dois métodos no Python DB API 2.0 committ e rollback. Committ dá o sinal verde para efetuar a transação e após este comando nenhum erro pode atrapalhar esta modificação. Já o comando Rollback desfaz a transação se um erro ocorrer antes do committ. O comando de desconexão serve para encerrar a transação e desfazer as mudanças(committ) não efetuadas. 14. Manipulando Erros: algumas fontes de erro são falha de conexão como por exemplo chamar um método de busca para um comando cancelado, etc. Em seguida temos a tabela de erros que deve ser confirmada para cada banco utilizado. Exceção Warning Error InterfaceError DatabaseError DataError OperationalError IntegrityError InternalError ProgrammingError NotSupportedError Descrição Usado para emitir mensagens não fatais. Subclasse de StandardError. Classe Base para erros. Subclasse de StandardError. Usado para erros no módulo de banco de dados, não do database. Suclasse de Error. Usado em erro da base de dados. Subclasse de Error. Subclass of DatabaseError that refers to errors in the data. Subclasse de DatabaseError que refere-se aos erros como perda de conexão. Esses erros são normalmente externos ao controle do script Python. Subclasse de DatabaseError para situações que danificariam a integridade relacional. Subclasse de DatabaseError que refere-se aos erros internos do módulo de database, como cursor não ativo. Subclasse de DatabaseError que refere-se a erros como nome errado da tabela ou coisas que podem seguramente ser reprovados. Subclasse de DatabaseError que refere-se a tentativa de chamadas não suportadas funcionalmente. 12

Referência Bibliográfica: Prates Rubens, Guia de Consulta Rápida MySQL, 2000 - Novatec Editora Ltda. Python - MySQL Database Access, maio 2009, http://www.tutorialspoint.com/python/python_database_access.htm Manual de Referência do MySQL 4.1, 2009, MySQL AB HOWTO Use Python in the web, http://www.python.org/doc/2.6.2/howto/webservers.html 13