domingo, 17 de fevereiro de 2013

Bancos de Dados com Python - PostgreSQL

Olá pessoal!

Mais uma vez vamos falar de acesso a bancos de dados com Python!

Desta vez, usaremos o PostgreSQL!

Estão prontos?

Precisamos antes de qualquer coisa instalar o postgres, e configurar um banco de dados e um usuário para podermos fazer o acesso.

Esta nesta parte não guiarei vocês porque a instalação e configuração do PostgreSQL tem suas especificidades para cada sistema e não seria legal deixar esta postagem muito grande para explicar tudo. Tenho certeza que encontrarão bons tutoriais online para aprender esta etapa.

Em seguida vamos instalar a API de acesso ao Postgres. Existem várias opções, mas aqui usaremos a Psycopg2, pois esta implementa várias funções especiais para o Postgres além de implementar totalmente a API 2.0 de acesso a bancos de dados do Python.

Após instalar o Psycopg2 (via repositório da sua distribuição Linux ou via instaladores que podem ser encontrados aqui) abra um shell python e vamos começar a acessar e usar o PostgreSQL

Importe o módulo do psycopg2

>>> import psycopg2

Crie uma conexão com o banco. Aqui usaremos o usuário padrão de gerenciamento do PostgreSQL e uma senha q criei somente para testes.

Você precisa ter criado previamente um banco de dados. Aqui, chamamos de testepy.

>>> con = psycopg2.connect(host='localhost', user='postgres', password='postgres',dbname='testepy')

Agora, guarde numa variável o cursor do banco

>>> c = con.cursor()

Agora é hora de criarmos uma tabela no nosso banco

>>> c.execute('CREATE TABLE teste (id int, nome text)')

Insira alguns dados no banco

>>> for i in xrange(5):
...     c.execute("INSERT INTO teste VALUES (%d, 'teste%d')"%(i, i))


Persista as alterações.

>>> con.commit()

Agora vamos executar queries para testar o acesso aos dados!

>>> c.execute('SELECT * FROM teste')
>>> c.fetchall()
>>> c.execute('SELECT * FROM teste WHERE id=%d'%3)
>>> c.fetchone()
>>> c.execute('SELECT * FROM teste WHERE nome=%s',('teste%d'%2,))
>>> c.fetchone()
>>> c.execute('SELECT nome FROM teste WHERE id=%s',[1])
>>> c.fetchone()
>>> itens = [(10, 'banana'),
...          (11, 'coco'),
...          (12, 'carambola')
...          ]
>>> c.executemany('insert into teste values (%s, %s)', itens)
>>> con.commit()
>>> c.execute('select * from teste order by nome')
>>> c.fetchall()


Se esiverem seguindo os artigos sobre acesso a bancos de dados, perceberão que os comandos que usamos aqui, mais uma vez foram exatamente os mesmos usados para o módulo se MySQL e de SQLite3.

Isto porque todos os módulos usados nesta série implementam a Python DB API Interface 2.0 Assim, com pouquíssimas alterações no código podemos executar o mesmo programa para diversos sistemas de bancos de dados.

Só para lembrar, aqui usamos o Python 2.7 para criar o tutorial, devido à grande quantidade que temos de APIs para esta versão.

No próximo artigo vamos falar sobre o SQL Server da Microsoft.

Espero que tenham gostado deste artigo!

Até a próxima, e divirtam-se!

Nenhum comentário:

Postar um comentário