SlideShare ist ein Scribd-Unternehmen logo
1 von 13
Downloaden Sie, um offline zu lesen
Python




             Python
Acessando o Banco de Dados MySQL




      ANTONIO SÉRGIO NOGUEIRA




          PRESIDENTE PRUDENTE – SP
                    2009



                     1
Python




                                                 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
Python

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
Python

       − 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:
>>>import MySQLdb
>>>
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
Python


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
#!python25python
import MySQLdb
# Abre o banco de dados
db = MySQLdb.connect("localhost","root","senha","TESTEDB" )
# prepara um objeto cursor usando método cursor()
cursor = db.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
db.close()

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
#!python25python
import MySQLdb


                                          5
Python

# Abre conexão
db = MySQLdb.connect("localhost","root","senha","TESTEDB" )
# prepara o objeto cursor
cursor = db.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
db.close()


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
#!python25python
import MySQLdb
# ABRE CONEXÃO
db = MySQLdb.connect("localhost","root","senha","TESTEDB" )
# prepara metodo cursor
cursor = db.cursor()

                                               6
Python

# 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
db.close()


Outro exemplo usando agora comando SQL Insert dinâmico.


#file: inseredadod.py
#!python25python
import MySQLdb
# Abre conexão com o banco de dados
db = MySQLdb.connect("localhost","root","senha","TESTEDB" )
# prepare o objeto curso com o método cursor.
cursor = db.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
Python

except:
  # desfazer em caso de erro
  db.rollback()
# desconecta
db.close()

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
#!python25python
import MySQLdb


# Abre conexão com o banco de dados
db = MySQLdb.connect("localhost","root","senha","TESTEDB" )
# prepare o objeto curso com o método cursor.
cursor = db.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
db.close()



                                            8
Python

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
#!python25python
import MySQLdb
# abre conexão
db = MySQLdb.connect("localhost","root","senha","TESTEDB" )
# objeto cursor
cursor = db.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
Python

           (fname, age, sex, income )
except:
  print "Erro na busca."
# desconecta
db.close()


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
#!python25python
import MySQLdb
# abre conexão
db = MySQLdb.connect("localhost","root","senha","TESTEDB" )
# objeto cursor
cursor = db.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
Python

       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
db.close()


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
#!python25python
import MySQLdb
# abre conexão
db = MySQLdb.connect("localhost","root","senha","TESTEDB" )
# prepare o objeto cursor
cursor = db.cursor()
# Prepare o comando SQL
sql = "DELETE FROM EMPREGADO WHERE IDADE < '%d'" % (25)
try:
  # Executa comando SQL
  cursor.execute(sql)


                                          11
Python

 # Efetua modificação do banco
 db.commit()
except:
 # Desfaz a modificação
 db.rollback()
# desconecta
db.close()


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                                        Descrição
Warning             Usado para emitir mensagens não fatais. Subclasse de StandardError.
Error               Classe Base para erros. Subclasse de StandardError.
                    Usado para erros no módulo de banco de dados, não do database. Suclasse de
InterfaceError
                    Error.
DatabaseError       Usado em erro da base de dados. Subclasse de Error.
DataError           Subclass of DatabaseError that refers to errors in the data.
                    Subclasse de DatabaseError que refere-se aos erros como perda de conexão.
OperationalError
                    Esses erros são normalmente externos ao controle do script Python.
                    Subclasse de DatabaseError para situações que danificariam a integridade
IntegrityError
                    relacional.
                    Subclasse de DatabaseError que refere-se aos erros internos do módulo de
InternalError
                    database, como cursor não ativo.
                    Subclasse de DatabaseError que refere-se a erros como nome errado da tabela
ProgrammingError
                    ou coisas que podem seguramente ser reprovados.
                    Subclasse de DatabaseError que refere-se a tentativa de chamadas não
NotSupportedError
                    suportadas funcionalmente.



                                               12
Python


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

Weitere ähnliche Inhalte

Was ist angesagt?

Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01 Léo Dias
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVAMoises Omena
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Programando em python interfaces graficas com tk
Programando em python   interfaces graficas com tkProgramando em python   interfaces graficas com tk
Programando em python interfaces graficas com tksamuelthiago
 
PHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de DadosPHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de DadosDaniel Brandão
 
Sistema Operacional Windows (versão 11)
Sistema Operacional Windows (versão 11)Sistema Operacional Windows (versão 11)
Sistema Operacional Windows (versão 11)DaviMatos25
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosDaniel Brandão
 
Aula 01 - JavaScript: Introdução
Aula 01 - JavaScript: IntroduçãoAula 01 - JavaScript: Introdução
Aula 01 - JavaScript: IntroduçãoJessyka Lage
 
Ebook AngularJS | Guia Introdutório
Ebook AngularJS | Guia Introdutório Ebook AngularJS | Guia Introdutório
Ebook AngularJS | Guia Introdutório Portal GSTI
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoRangel Javier
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvcleopp
 
Conceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBDConceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBDVinicius Buffolo
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 

Was ist angesagt? (20)

Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Programando em python interfaces graficas com tk
Programando em python   interfaces graficas com tkProgramando em python   interfaces graficas com tk
Programando em python interfaces graficas com tk
 
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScriptCurso de Desenvolvimento Web - Módulo 03 - JavaScript
Curso de Desenvolvimento Web - Módulo 03 - JavaScript
 
PHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de DadosPHP Aula07 - conexão Com Banco de Dados
PHP Aula07 - conexão Com Banco de Dados
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
Aula10 sql-ddl
Aula10 sql-ddlAula10 sql-ddl
Aula10 sql-ddl
 
Sistema Operacional Windows (versão 11)
Sistema Operacional Windows (versão 11)Sistema Operacional Windows (versão 11)
Sistema Operacional Windows (versão 11)
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
 
Aula 01 - JavaScript: Introdução
Aula 01 - JavaScript: IntroduçãoAula 01 - JavaScript: Introdução
Aula 01 - JavaScript: Introdução
 
Ebook AngularJS | Guia Introdutório
Ebook AngularJS | Guia Introdutório Ebook AngularJS | Guia Introdutório
Ebook AngularJS | Guia Introdutório
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Apresentação mvc
Apresentação mvcApresentação mvc
Apresentação mvc
 
Conceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBDConceitos de Banco de dados e SGBD
Conceitos de Banco de dados e SGBD
 
Aula 1 - Revisão UML
Aula 1 - Revisão UMLAula 1 - Revisão UML
Aula 1 - Revisão UML
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 

Andere mochten auch

Pip - Instalando Pacotes facilmente para Python
Pip - Instalando Pacotes facilmente para PythonPip - Instalando Pacotes facilmente para Python
Pip - Instalando Pacotes facilmente para Pythonpugpe
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e TkCarlos Campani
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Python Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem PythonPython Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem Pythonantonio sérgio nogueira
 
Desenvolvendo DSLs Em Python
Desenvolvendo DSLs Em PythonDesenvolvendo DSLs Em Python
Desenvolvendo DSLs Em PythonRodrigo Manhães
 
Construindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonConstruindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonMarcel Caraciolo
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Webantonio sérgio nogueira
 
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!Juliano Atanazio
 
Automatizando tarefas com Python
Automatizando tarefas com PythonAutomatizando tarefas com Python
Automatizando tarefas com Pythonpugpe
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratórioMarcel Caraciolo
 

Andere mochten auch (20)

Python e bancos NoSQL
Python e bancos NoSQLPython e bancos NoSQL
Python e bancos NoSQL
 
Pip - Instalando Pacotes facilmente para Python
Pip - Instalando Pacotes facilmente para PythonPip - Instalando Pacotes facilmente para Python
Pip - Instalando Pacotes facilmente para Python
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e Tk
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Postgresql +python
Postgresql +pythonPostgresql +python
Postgresql +python
 
TWP47 Módulos
TWP47 MódulosTWP47 Módulos
TWP47 Módulos
 
Python Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem PythonPython Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem Python
 
Twittando Com Python
Twittando Com PythonTwittando Com Python
Twittando Com Python
 
Desenvolvendo DSLs Em Python
Desenvolvendo DSLs Em PythonDesenvolvendo DSLs Em Python
Desenvolvendo DSLs Em Python
 
Construindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com PythonConstruindo Sistemas de Recomendação com Python
Construindo Sistemas de Recomendação com Python
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
 
TWP15 Repetições
TWP15 RepetiçõesTWP15 Repetições
TWP15 Repetições
 
Com vocês, Django!
Com vocês, Django!Com vocês, Django!
Com vocês, Django!
 
TWP30 Revisão Geral 1
TWP30 Revisão Geral 1TWP30 Revisão Geral 1
TWP30 Revisão Geral 1
 
Python 04
Python 04Python 04
Python 04
 
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!
 
Automatizando tarefas com Python
Automatizando tarefas com PythonAutomatizando tarefas com Python
Automatizando tarefas com Python
 
Python Interface Gráfica Tkinter
Python Interface Gráfica TkinterPython Interface Gráfica Tkinter
Python Interface Gráfica Tkinter
 
Como Python pode ajudar na automação do seu laboratório
Como Python pode ajudar na automação do  seu laboratórioComo Python pode ajudar na automação do  seu laboratório
Como Python pode ajudar na automação do seu laboratório
 
Hackeando Dados públicos com python
Hackeando Dados públicos com pythonHackeando Dados públicos com python
Hackeando Dados públicos com python
 

Ähnlich wie Acessando o Banco de Dados MySQL com Python

3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29Juliana Nascimento
 
DELPHI & MySQL - September 2004
DELPHI & MySQL - September 2004DELPHI & MySQL - September 2004
DELPHI & MySQL - September 2004Michel Alves
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Fabrízio Mello
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdoJorge Luís Gregório
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1Sliedesharessbarbosa
 
Aula05 android persistencia
Aula05 android persistenciaAula05 android persistencia
Aula05 android persistenciaRoberson Alves
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcJeison Barros
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosVitor Silva
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
Gerência de redes utilizando o cacti
Gerência de redes utilizando o cactiGerência de redes utilizando o cacti
Gerência de redes utilizando o cactiIsraelCunha
 

Ähnlich wie Acessando o Banco de Dados MySQL com Python (20)

3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29
 
3260 php truquesmagicos
3260 php truquesmagicos3260 php truquesmagicos
3260 php truquesmagicos
 
Java com banco my sql
Java com banco my sqlJava com banco my sql
Java com banco my sql
 
DELPHI & MySQL - September 2004
DELPHI & MySQL - September 2004DELPHI & MySQL - September 2004
DELPHI & MySQL - September 2004
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
Dsi   015 - poo e php - conexão com bancos de dados usando pdoDsi   015 - poo e php - conexão com bancos de dados usando pdo
Dsi 015 - poo e php - conexão com bancos de dados usando pdo
 
Vb
VbVb
Vb
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 
Aula05 android persistencia
Aula05 android persistenciaAula05 android persistencia
Aula05 android persistencia
 
Java13
Java13Java13
Java13
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Crud
CrudCrud
Crud
 
Java 16 Jdbc
Java 16 JdbcJava 16 Jdbc
Java 16 Jdbc
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Gerência de redes utilizando o cacti
Gerência de redes utilizando o cactiGerência de redes utilizando o cacti
Gerência de redes utilizando o cacti
 

Mehr von antonio sérgio nogueira

Montagem capota Saveiro 2010 correta sem gancho
Montagem capota Saveiro 2010 correta sem ganchoMontagem capota Saveiro 2010 correta sem gancho
Montagem capota Saveiro 2010 correta sem ganchoantonio sérgio nogueira
 
Montagem capota Saveiro 2010 correta sem gancho
Montagem capota Saveiro 2010 correta sem ganchoMontagem capota Saveiro 2010 correta sem gancho
Montagem capota Saveiro 2010 correta sem ganchoantonio sérgio nogueira
 
Montagem capota Saveiro cross coretissima fls 02
Montagem capota Saveiro cross coretissima fls 02Montagem capota Saveiro cross coretissima fls 02
Montagem capota Saveiro cross coretissima fls 02antonio sérgio nogueira
 
montagem capota Strada simp estend-dupla novo 2014
montagem capota Strada simp estend-dupla novo 2014montagem capota Strada simp estend-dupla novo 2014
montagem capota Strada simp estend-dupla novo 2014antonio sérgio nogueira
 
Montagem Capota Strada simples e est.perfil novo 2014
Montagem Capota Strada simples e est.perfil novo 2014Montagem Capota Strada simples e est.perfil novo 2014
Montagem Capota Strada simples e est.perfil novo 2014antonio sérgio nogueira
 
Montagem Capota Altas grande fechada -detalhe
Montagem Capota Altas grande fechada -detalheMontagem Capota Altas grande fechada -detalhe
Montagem Capota Altas grande fechada -detalheantonio sérgio nogueira
 

Mehr von antonio sérgio nogueira (20)

Montagem capota Montana 2008
Montagem capota Montana 2008Montagem capota Montana 2008
Montagem capota Montana 2008
 
Montagem capota Saveiro 2010 correta sem gancho
Montagem capota Saveiro 2010 correta sem ganchoMontagem capota Saveiro 2010 correta sem gancho
Montagem capota Saveiro 2010 correta sem gancho
 
Montagem capota Saveiro 2010 correta sem gancho
Montagem capota Saveiro 2010 correta sem ganchoMontagem capota Saveiro 2010 correta sem gancho
Montagem capota Saveiro 2010 correta sem gancho
 
MOntagem capota Saveiro cross folha o1
MOntagem capota Saveiro cross folha o1MOntagem capota Saveiro cross folha o1
MOntagem capota Saveiro cross folha o1
 
Montagem capota Saveiro cross coretissima fls 02
Montagem capota Saveiro cross coretissima fls 02Montagem capota Saveiro cross coretissima fls 02
Montagem capota Saveiro cross coretissima fls 02
 
Montagem capota Saveiro 1997
Montagem capota Saveiro 1997 Montagem capota Saveiro 1997
Montagem capota Saveiro 1997
 
montagem capota Strada simp estend-dupla novo 2014
montagem capota Strada simp estend-dupla novo 2014montagem capota Strada simp estend-dupla novo 2014
montagem capota Strada simp estend-dupla novo 2014
 
Montagem Capota Strada simples e est.perfil novo 2014
Montagem Capota Strada simples e est.perfil novo 2014Montagem Capota Strada simples e est.perfil novo 2014
Montagem Capota Strada simples e est.perfil novo 2014
 
Montagem capota Mitsubshi antiga
Montagem capota Mitsubshi antigaMontagem capota Mitsubshi antiga
Montagem capota Mitsubshi antiga
 
Montagem capota de Jeep
Montagem capota de Jeep Montagem capota de Jeep
Montagem capota de Jeep
 
Montagem Capota Hoggar peugeot
Montagem Capota Hoggar peugeot Montagem Capota Hoggar peugeot
Montagem Capota Hoggar peugeot
 
Montagem Capota Hilux ate 2001
Montagem Capota Hilux ate 2001Montagem Capota Hilux ate 2001
Montagem Capota Hilux ate 2001
 
Montagem capota S10
Montagem capota S10Montagem capota S10
Montagem capota S10
 
Montagem capota Toro
Montagem capota ToroMontagem capota Toro
Montagem capota Toro
 
Montagem Capota Fiat fiorino
Montagem Capota Fiat fiorino Montagem Capota Fiat fiorino
Montagem Capota Fiat fiorino
 
Montagem capota F 250 e f-1000
Montagem capota F 250 e f-1000Montagem capota F 250 e f-1000
Montagem capota F 250 e f-1000
 
Montagem Capota Diversos montagem 2019
Montagem Capota Diversos montagem 2019Montagem Capota Diversos montagem 2019
Montagem Capota Diversos montagem 2019
 
Montagem Capota Courier
Montagem Capota CourierMontagem Capota Courier
Montagem Capota Courier
 
Montagem Amarok extreme 2018
Montagem Amarok extreme 2018Montagem Amarok extreme 2018
Montagem Amarok extreme 2018
 
Montagem Capota Altas grande fechada -detalhe
Montagem Capota Altas grande fechada -detalheMontagem Capota Altas grande fechada -detalhe
Montagem Capota Altas grande fechada -detalhe
 

Acessando o Banco de Dados MySQL com Python

  • 1. Python Python Acessando o Banco de Dados MySQL ANTONIO SÉRGIO NOGUEIRA PRESIDENTE PRUDENTE – SP 2009 1
  • 2. Python 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
  • 3. Python 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
  • 4. Python − 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: >>>import MySQLdb >>> 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
  • 5. Python 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 #!python25python import MySQLdb # Abre o banco de dados db = MySQLdb.connect("localhost","root","senha","TESTEDB" ) # prepara um objeto cursor usando método cursor() cursor = db.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 db.close() 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 #!python25python import MySQLdb 5
  • 6. Python # Abre conexão db = MySQLdb.connect("localhost","root","senha","TESTEDB" ) # prepara o objeto cursor cursor = db.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 db.close() 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 #!python25python import MySQLdb # ABRE CONEXÃO db = MySQLdb.connect("localhost","root","senha","TESTEDB" ) # prepara metodo cursor cursor = db.cursor() 6
  • 7. Python # 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 db.close() Outro exemplo usando agora comando SQL Insert dinâmico. #file: inseredadod.py #!python25python import MySQLdb # Abre conexão com o banco de dados db = MySQLdb.connect("localhost","root","senha","TESTEDB" ) # prepare o objeto curso com o método cursor. cursor = db.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
  • 8. Python except: # desfazer em caso de erro db.rollback() # desconecta db.close() 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 #!python25python import MySQLdb # Abre conexão com o banco de dados db = MySQLdb.connect("localhost","root","senha","TESTEDB" ) # prepare o objeto curso com o método cursor. cursor = db.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 db.close() 8
  • 9. Python 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 #!python25python import MySQLdb # abre conexão db = MySQLdb.connect("localhost","root","senha","TESTEDB" ) # objeto cursor cursor = db.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
  • 10. Python (fname, age, sex, income ) except: print "Erro na busca." # desconecta db.close() 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 #!python25python import MySQLdb # abre conexão db = MySQLdb.connect("localhost","root","senha","TESTEDB" ) # objeto cursor cursor = db.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
  • 11. Python 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 db.close() 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 #!python25python import MySQLdb # abre conexão db = MySQLdb.connect("localhost","root","senha","TESTEDB" ) # prepare o objeto cursor cursor = db.cursor() # Prepare o comando SQL sql = "DELETE FROM EMPREGADO WHERE IDADE < '%d'" % (25) try: # Executa comando SQL cursor.execute(sql) 11
  • 12. Python # Efetua modificação do banco db.commit() except: # Desfaz a modificação db.rollback() # desconecta db.close() 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 Descrição Warning Usado para emitir mensagens não fatais. Subclasse de StandardError. Error Classe Base para erros. Subclasse de StandardError. Usado para erros no módulo de banco de dados, não do database. Suclasse de InterfaceError Error. DatabaseError Usado em erro da base de dados. Subclasse de Error. DataError Subclass of DatabaseError that refers to errors in the data. Subclasse de DatabaseError que refere-se aos erros como perda de conexão. OperationalError Esses erros são normalmente externos ao controle do script Python. Subclasse de DatabaseError para situações que danificariam a integridade IntegrityError relacional. Subclasse de DatabaseError que refere-se aos erros internos do módulo de InternalError database, como cursor não ativo. Subclasse de DatabaseError que refere-se a erros como nome errado da tabela ProgrammingError ou coisas que podem seguramente ser reprovados. Subclasse de DatabaseError que refere-se a tentativa de chamadas não NotSupportedError suportadas funcionalmente. 12
  • 13. Python 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