SlideShare uma empresa Scribd logo
1 de 34
1
Python
Persistência de Dados
Marcel Pinheiro Caraciolo
Python Aula 07
2
Onde por meus
dados?
... Arquivo neles!
Python Aula 07
3
... Clássico arquivos ...
• Suporte nativo para leitura e escrita de arquivos
• file =open(‘filePath’, ‘r’) Mode: ‘r’, ‘w’, ‘a‘ , file.close()
• file.read(), readlines(), readline()
• file.write(), writelines()
• Método mais simples para armazenamento de
dados quando os mesmos não precisam de uma
estrutura ou a recuperação dos mesmos não for
um fator crítico!
Python Aula 07
4
... Clássico arquivos ...
Python Aula 07
5
Persistência de Objetos
• Pode-se escrever objetos em arquivos, basta
usar o módulo pickle
• Dump
• Transforma objetos em strings
• Load
• Transforma objetos em strings
Python Aula 07
6
Persistência de Objetos
Python Aula 07
7
Exercício 01
Python Aula 07
8
Arquivos .CSV
• Comma Separated Values.
• Dados armazenados por algum delimitador (, ; t)
• Suporte Nativo de Python (import csv)
• open(‘file.csv’, ‘rb’) reader =csv.reader(file) ,
csv.writer(outfile,delimiter=’,’)
• csv.writerow(row) , file.close() , for row in reader (leitura)
• Arquivo que permite já armazenar dados com
uma não tão sofisticada estrutura, mas permite
ser aberto em aplicativos como Microsoft Excel!
Python Aula 07
9
Arquivos .CSV
#To Read
import csv
reader = csv.reader(open("some.csv", "rb"))
for row in reader:
print row
#To Write
import csv
writer = csv.writer(open("some.csv", "wb"))
writer.writerows(someiterable)
Python Aula 07
10
E Persistir em DBs ?
Persistência em Banco de dados!
Python Aula 07
11
Sqlite
• Sqlite é uma biblioteca em C que provê a
construção de bancos de dados sem a
necessidade de serviços de servidores
• Bastante utilizado para construção de pequenas bases de dados
• Para acesso ao banco, utiliza-se de uma variante da linguagem de
consulta SQL.
• Você pode prototipar sua aplicação usando SQLite e depois portar o
mesmo facilmente para bancos maiores como Oracle ou PostGreSQL
Python Aula 07
12
Abrindo uma conexão
• con = sqlite3.connect(“mydb.db”)
• Se o banco não existir, um banco vazio é criado
• con = sqlite3.connect(“:memory:”)
• Banco armazenado na mémoria e é sempre vazio quando criado.
Python Aula 07
13
Criando um cursor
• cur = con.cursor()
• Responsável pela instância de persistência ( o cursor que irá realizar as
transações sobre a conexão do banco corrente)
Python Aula 07
14
Executando uma consulta
Retorna linhas como tuplas !
Python Aula 07
15
Executando uma consulta
O cursor é iterável, apenas fazer um loop sobre o cursor
print cur.fetchall() *
*Degradação de performance! (Retorna todos os resultados)
Python Aula 07
16
Consultas com
parâmetros
SQL:
String em Python, que deve ser codificada em UTF-8
se conter caracteres não ASCII, ou em Unicode
Parameters:
Sequência (lista, tupla) ou até um dicionário
Python Aula 07
17
Executando uma consulta
c.execute(‘’‘create table person firstname text, secondname text, age
integer””)
Criando Tabelas, mesma maneira que Sql
comum, apenas não esquecer os tipos possíveis!
Python Aula 07
18
Executando uma consulta
Use ? como caracteres de posição e a sequência
como parâmetros
Python Aula 07
19
Executando uma consulta
Use :nome como caracteres de posição e o
dicionário como parâmetro
Python Aula 07
20
Oops ? Cadê meus
dados?
sqlite3 usa transações para que o banco de dados
sempre fique consistente. Para que as mudanças
sejam permantentes você deve realizar uma
operação de commit!
Python Aula 07
21
Commit neles!
Após modificações no banco, faça um commit
sobre suas mudanças para que os dados sejam
gravados de forma consistente.
Python Aula 07
22
Algum problema? Roll
back!
Roll back permite desfazer algum commit quando
algum erro acontece durante a transação (Objetivo:
Manter os dados consistentes!)
Python Aula 07
23
Seja legal e feche tudo!
Você deve fechar as conexões e cursores que não
estão sendo mais usadas. Apenas feche a conexão
quando os respectivos cursores estiverem fechados!
Python Aula 07
24
Vamos a um exemplo
prático!
Vamos criar uma tabela Estoque de item e fazer
algumas consultas!
Date Trans Symbol Qty Price
2006-01-05 ‘BUY’ IBM’ 1000 45.00
2006-03-28 SELL’ MSOFT’ 500 72.00
... ... ... .... ...
Python Aula 07
25
Outros bancos de dados
• Várias bibliotecas disponíveis para diversos
bancos:
• Conector Oracle (cx_Oracle)
• Conector PostGreSql (py-postgresql)
• Conector Sql Server (pymssql )
• Conector MySQL (MySQLdb)
• Interbase/Firebird = (kinterbasdb)
• Python muito poderoso, não apenas fornece
conectores para diversos bancos como também
provê um mini-banco nativo de fácil acesso!
Python Aula 07
26
Outros bancos de dados
• Todos seguem a mesma linha, apenas o sqlite
usa um arquivo local como banco ao invés de
uma base de dados
• Existem pequenas diferenças entre as
implementações
• Os comandos para obter conexões são os que
mais variam
Python Aula 07
27
Python Aula 07
28
Outros bancos de dados
Python Aula 07
29
Outros bancos de dados
Python Aula 07
30
Outros bancos de dados
Python Aula 07
31
Outros bancos de dados
Python Aula 07
32
Outros bancos de dados
Python Aula 07
33
Referências
Python Aula 07
34
Python
Persistência de Dados
Marcel Pinheiro Caraciolo
Python Aula 07

Mais conteúdo relacionado

Semelhante a Persistência Dados Python

Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadospichiliani
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialFabio Spanhol
 
MEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupMEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupAndré Cruz
 
Exemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dadosExemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dadosLuis Borges Gouveia
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMFábio Rehm
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 
SQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataSQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataRodrigo Dornel
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsHelio Colombe
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01julianabdpaiva
 

Semelhante a Persistência Dados Python (20)

Interoperabilidade entre bancos de dados
Interoperabilidade entre bancos de dadosInteroperabilidade entre bancos de dados
Interoperabilidade entre bancos de dados
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
 
MEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupMEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon Meetup
 
Apostila curso php_my_sql(portugues)
Apostila curso php_my_sql(portugues)Apostila curso php_my_sql(portugues)
Apostila curso php_my_sql(portugues)
 
Exemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dadosExemplo e caso prático do uso de base de dados
Exemplo e caso prático do uso de base de dados
 
Aula 06 - TEP - Introdução SQLite
Aula 06 - TEP - Introdução SQLiteAula 06 - TEP - Introdução SQLite
Aula 06 - TEP - Introdução SQLite
 
Introdução ao no sql e mongodb
Introdução ao no sql e mongodbIntrodução ao no sql e mongodb
Introdução ao no sql e mongodb
 
Primeiros Passos Com Elasticsearch
Primeiros Passos Com ElasticsearchPrimeiros Passos Com Elasticsearch
Primeiros Passos Com Elasticsearch
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORM
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 
SQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigDataSQL Server Heterogêneo: SQL Server + BigData
SQL Server Heterogêneo: SQL Server + BigData
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
 
Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 

Mais de RosibertoGonalves

Apresentação SEE 2023 1 .p p t x - vacinação
Apresentação SEE 2023  1 .p p t x - vacinaçãoApresentação SEE 2023  1 .p p t x - vacinação
Apresentação SEE 2023 1 .p p t x - vacinaçãoRosibertoGonalves
 
Palestra Fiware - FliSol - v7_Final.pptx
Palestra Fiware - FliSol - v7_Final.pptxPalestra Fiware - FliSol - v7_Final.pptx
Palestra Fiware - FliSol - v7_Final.pptxRosibertoGonalves
 
Material de Apoio - MSLE a certificação azure
Material de Apoio - MSLE a certificação azureMaterial de Apoio - MSLE a certificação azure
Material de Apoio - MSLE a certificação azureRosibertoGonalves
 
sistemas embarcados apresentação embarca
sistemas embarcados apresentação embarcasistemas embarcados apresentação embarca
sistemas embarcados apresentação embarcaRosibertoGonalves
 
G e n d e r - a p p l i c a t i o n - g u i d e lines.pptx
G e n d e r - a p p l i c a t i o n - g u i d e lines.pptxG e n d e r - a p p l i c a t i o n - g u i d e lines.pptx
G e n d e r - a p p l i c a t i o n - g u i d e lines.pptxRosibertoGonalves
 
apresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for allapresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for allRosibertoGonalves
 
arelacaoinventivadaroboticaeeducacao-marygracepereiraandrioli.pptx
arelacaoinventivadaroboticaeeducacao-marygracepereiraandrioli.pptxarelacaoinventivadaroboticaeeducacao-marygracepereiraandrioli.pptx
arelacaoinventivadaroboticaeeducacao-marygracepereiraandrioli.pptxRosibertoGonalves
 
Budget Guide Call 5 p p t x Budget Guide Cal
Budget Guide Call 5 p p t  x Budget Guide CalBudget Guide Call 5 p p t  x Budget Guide Cal
Budget Guide Call 5 p p t x Budget Guide CalRosibertoGonalves
 
percurso2_AF_MA_PF3_PPT_.pptx
percurso2_AF_MA_PF3_PPT_.pptxpercurso2_AF_MA_PF3_PPT_.pptx
percurso2_AF_MA_PF3_PPT_.pptxRosibertoGonalves
 

Mais de RosibertoGonalves (9)

Apresentação SEE 2023 1 .p p t x - vacinação
Apresentação SEE 2023  1 .p p t x - vacinaçãoApresentação SEE 2023  1 .p p t x - vacinação
Apresentação SEE 2023 1 .p p t x - vacinação
 
Palestra Fiware - FliSol - v7_Final.pptx
Palestra Fiware - FliSol - v7_Final.pptxPalestra Fiware - FliSol - v7_Final.pptx
Palestra Fiware - FliSol - v7_Final.pptx
 
Material de Apoio - MSLE a certificação azure
Material de Apoio - MSLE a certificação azureMaterial de Apoio - MSLE a certificação azure
Material de Apoio - MSLE a certificação azure
 
sistemas embarcados apresentação embarca
sistemas embarcados apresentação embarcasistemas embarcados apresentação embarca
sistemas embarcados apresentação embarca
 
G e n d e r - a p p l i c a t i o n - g u i d e lines.pptx
G e n d e r - a p p l i c a t i o n - g u i d e lines.pptxG e n d e r - a p p l i c a t i o n - g u i d e lines.pptx
G e n d e r - a p p l i c a t i o n - g u i d e lines.pptx
 
apresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for allapresentação Curso de Python ppt python for all
apresentação Curso de Python ppt python for all
 
arelacaoinventivadaroboticaeeducacao-marygracepereiraandrioli.pptx
arelacaoinventivadaroboticaeeducacao-marygracepereiraandrioli.pptxarelacaoinventivadaroboticaeeducacao-marygracepereiraandrioli.pptx
arelacaoinventivadaroboticaeeducacao-marygracepereiraandrioli.pptx
 
Budget Guide Call 5 p p t x Budget Guide Cal
Budget Guide Call 5 p p t  x Budget Guide CalBudget Guide Call 5 p p t  x Budget Guide Cal
Budget Guide Call 5 p p t x Budget Guide Cal
 
percurso2_AF_MA_PF3_PPT_.pptx
percurso2_AF_MA_PF3_PPT_.pptxpercurso2_AF_MA_PF3_PPT_.pptx
percurso2_AF_MA_PF3_PPT_.pptx
 

Persistência Dados Python

  • 1. 1 Python Persistência de Dados Marcel Pinheiro Caraciolo Python Aula 07
  • 2. 2 Onde por meus dados? ... Arquivo neles! Python Aula 07
  • 3. 3 ... Clássico arquivos ... • Suporte nativo para leitura e escrita de arquivos • file =open(‘filePath’, ‘r’) Mode: ‘r’, ‘w’, ‘a‘ , file.close() • file.read(), readlines(), readline() • file.write(), writelines() • Método mais simples para armazenamento de dados quando os mesmos não precisam de uma estrutura ou a recuperação dos mesmos não for um fator crítico! Python Aula 07
  • 4. 4 ... Clássico arquivos ... Python Aula 07
  • 5. 5 Persistência de Objetos • Pode-se escrever objetos em arquivos, basta usar o módulo pickle • Dump • Transforma objetos em strings • Load • Transforma objetos em strings Python Aula 07
  • 8. 8 Arquivos .CSV • Comma Separated Values. • Dados armazenados por algum delimitador (, ; t) • Suporte Nativo de Python (import csv) • open(‘file.csv’, ‘rb’) reader =csv.reader(file) , csv.writer(outfile,delimiter=’,’) • csv.writerow(row) , file.close() , for row in reader (leitura) • Arquivo que permite já armazenar dados com uma não tão sofisticada estrutura, mas permite ser aberto em aplicativos como Microsoft Excel! Python Aula 07
  • 9. 9 Arquivos .CSV #To Read import csv reader = csv.reader(open("some.csv", "rb")) for row in reader: print row #To Write import csv writer = csv.writer(open("some.csv", "wb")) writer.writerows(someiterable) Python Aula 07
  • 10. 10 E Persistir em DBs ? Persistência em Banco de dados! Python Aula 07
  • 11. 11 Sqlite • Sqlite é uma biblioteca em C que provê a construção de bancos de dados sem a necessidade de serviços de servidores • Bastante utilizado para construção de pequenas bases de dados • Para acesso ao banco, utiliza-se de uma variante da linguagem de consulta SQL. • Você pode prototipar sua aplicação usando SQLite e depois portar o mesmo facilmente para bancos maiores como Oracle ou PostGreSQL Python Aula 07
  • 12. 12 Abrindo uma conexão • con = sqlite3.connect(“mydb.db”) • Se o banco não existir, um banco vazio é criado • con = sqlite3.connect(“:memory:”) • Banco armazenado na mémoria e é sempre vazio quando criado. Python Aula 07
  • 13. 13 Criando um cursor • cur = con.cursor() • Responsável pela instância de persistência ( o cursor que irá realizar as transações sobre a conexão do banco corrente) Python Aula 07
  • 14. 14 Executando uma consulta Retorna linhas como tuplas ! Python Aula 07
  • 15. 15 Executando uma consulta O cursor é iterável, apenas fazer um loop sobre o cursor print cur.fetchall() * *Degradação de performance! (Retorna todos os resultados) Python Aula 07
  • 16. 16 Consultas com parâmetros SQL: String em Python, que deve ser codificada em UTF-8 se conter caracteres não ASCII, ou em Unicode Parameters: Sequência (lista, tupla) ou até um dicionário Python Aula 07
  • 17. 17 Executando uma consulta c.execute(‘’‘create table person firstname text, secondname text, age integer””) Criando Tabelas, mesma maneira que Sql comum, apenas não esquecer os tipos possíveis! Python Aula 07
  • 18. 18 Executando uma consulta Use ? como caracteres de posição e a sequência como parâmetros Python Aula 07
  • 19. 19 Executando uma consulta Use :nome como caracteres de posição e o dicionário como parâmetro Python Aula 07
  • 20. 20 Oops ? Cadê meus dados? sqlite3 usa transações para que o banco de dados sempre fique consistente. Para que as mudanças sejam permantentes você deve realizar uma operação de commit! Python Aula 07
  • 21. 21 Commit neles! Após modificações no banco, faça um commit sobre suas mudanças para que os dados sejam gravados de forma consistente. Python Aula 07
  • 22. 22 Algum problema? Roll back! Roll back permite desfazer algum commit quando algum erro acontece durante a transação (Objetivo: Manter os dados consistentes!) Python Aula 07
  • 23. 23 Seja legal e feche tudo! Você deve fechar as conexões e cursores que não estão sendo mais usadas. Apenas feche a conexão quando os respectivos cursores estiverem fechados! Python Aula 07
  • 24. 24 Vamos a um exemplo prático! Vamos criar uma tabela Estoque de item e fazer algumas consultas! Date Trans Symbol Qty Price 2006-01-05 ‘BUY’ IBM’ 1000 45.00 2006-03-28 SELL’ MSOFT’ 500 72.00 ... ... ... .... ... Python Aula 07
  • 25. 25 Outros bancos de dados • Várias bibliotecas disponíveis para diversos bancos: • Conector Oracle (cx_Oracle) • Conector PostGreSql (py-postgresql) • Conector Sql Server (pymssql ) • Conector MySQL (MySQLdb) • Interbase/Firebird = (kinterbasdb) • Python muito poderoso, não apenas fornece conectores para diversos bancos como também provê um mini-banco nativo de fácil acesso! Python Aula 07
  • 26. 26 Outros bancos de dados • Todos seguem a mesma linha, apenas o sqlite usa um arquivo local como banco ao invés de uma base de dados • Existem pequenas diferenças entre as implementações • Os comandos para obter conexões são os que mais variam Python Aula 07
  • 28. 28 Outros bancos de dados Python Aula 07
  • 29. 29 Outros bancos de dados Python Aula 07
  • 30. 30 Outros bancos de dados Python Aula 07
  • 31. 31 Outros bancos de dados Python Aula 07
  • 32. 32 Outros bancos de dados Python Aula 07
  • 34. 34 Python Persistência de Dados Marcel Pinheiro Caraciolo Python Aula 07