Desenvolvimento - Python

Instalando o MySQL no Zope/Plone e criando uma pequena aplicação

Neste artigo ensinarei como instalar o MySQL, o Python-MySQL e o ZMySQLDA, que são componentes necessários para executar aplicativos Python/Zope/Plone.

por Fábio Rizzo Matos



Pré-requisitos

Para utilizarmos o MySQL como banco de dados do Zope/Plone devemos instalar:

Python - Linguagem Para Execução do Zope
Zope - Servidor de Aplicação Web
Plone - Framework de CMS
MySQL - Banco de Dados
Python-MySQL - Interface para o Python acessar o MySQL
ZMySQLDA - Database Adapter para o Zope acessar o MySQL

Neste artigo ensinarei como instalar o MySQL, o Python-MySQL e o ZMySQLDA, que são componentes necessários para executar aplicativos Python/Zope/Plone.

Vamos a instalação do MySQL!

Instalando o MySQL

Se você já tem instalado o MySQL em sua distribuição, pode pular esta parte e avançar para a próxima parte.

Caso você não tenha instalado ainda o MySQL, ensinarei como instalar o MySQL no Fedora Core 1 à partir dos binários do site.

Acesse:
http://dev.mysql.com/get/.../mysql-standard-4.0.20-pc-linux-i686.tar.gz...

Caso mude o caminho, acesse www.mysql.com e procure pela versão 4.0 do Banco de Dados.

Copie o arquivo mysql-standard-4.0.20-pc-linux-i686.tar.gz para /tmp ou para um diretório de sua preferência.

Execute os seguintes procedimentos como root:

Criar grupo e usuário para executar o MySQL:

# groupadd mysql
# useradd -g mysql mysql 

Descompactar o MySQL:

# cd /usr/local
# gunzip < /tmp/mysql-standard-4.0.20-pc-linux-i686.tar.gz | tar xvf - 

Criar o link para MySQL:

# ln -s /tmp/mysql-standard-4.0.20-pc-linux-i686 mysql
# cd mysql 

Executar o script para instalação do banco:

# scripts/mysql_install_db --user=mysql 

Setar algumas permissões:

# chown -R root .
# chown -R mysql data
# chgrp -R mysql . 

Iniciar o banco de dados:

# bin/mysqld_safe --user=mysql & 

Caso não tenha ocorrido nenhum erro, o MySQL deverá ser iniciado com o comando anterior. Vamos instalar agora o suporte do Python para o MySQL.

Instalando o MySQL-Python

Como o Zope/Plone utilizam a linguagem Python de desenvolvimento, é necessário instalar a API-DB do MySQL.

Acesse:
http://prdownloads.sourceforge.net/.../MySQL-python-1.0.0.tar.gz?download

Baixe o arquivo no diretório /tmp e execute os seguintes comandos:

$ cd /tmp
$ tar xvf MySQL-python-1.0.0.tar.gz
$ cd MySQL-python-1.0.0
$ export mysqlversion="4.0.20" 
# Ou a sua versão instalada

$ export mysqlclient="mysqlclient_r"
$ export mysqloptlibs="ssl crypto"
$ python setup.py build
$ su
# python setup.py install 

Pronto, se nenhum erro ocorreu, você já esta com o suporte do MySQL no Python. Vamos instalar agora o suporte no Zope/Plone.

Instalando o ZMySQLDA

Depois de Instalado o MySQL-python, devemos instalar um adaptador para se o Zope/Plone se conectar ao banco de dados.

Acesse:
http://prdownloads.sourceforge.net/.../ZMySQLDA-2.0.8.tar.gz

E copie para /tmp.

Verifique se o servidor Zope não esta no ar, se estiver, dê um shutdown nele.

Faça:

# cd /tmp
# tar zxvf ZMySQLDA-2.0.8.tar.gz
# mv lib/python/Products/ZMySQLDA /opt/Zope-2.7/lib/python/Products/ZMySQLDA 

Inicie o seu servidor Zope/Plone.

Pronto, já podemos utilizar o Zope/Plone para acessar um banco MySQL.

Conectando ao banco de dados MySQL

Para acessar um banco de dados MySQL, temos que criar uma conexão com o banco de dados.

Acesse o seu portal Zope/Plone. Exemplo:

http://localhost:8080/manage

Selecione e adicione o objeto Z MySQLdb como na figura abaixo:

Uma janela com as propriedades será exibida conforme abaixo:

Coloque as informações sobre o seu banco. Exemplo:

Zope root 123456789

Onde:
Zope é o seu database;
root o seu usuário;
e 123456789 a sua senha.

Se tudo ocorreu corretamente, você terá criado com sucesso uma conexão ao banco de dados MySQL.

Rodando um SELECT simples

Depois de criado a conexão com o banco de dados, podemos rodar nele comandos SQL, tais como SELECT, INSERT, UPDATE, entre outros.

Criando o ZSQL Method

Acesse a interface ZMI e clique em Z SQL Method. Uma janela como esta a seguir vai aparecer:

Onde:
Id é o nome do objeto dentro do Zope;
Title é o título que aparece no ZMI;
Connection ID é a conexão com o banco de dados (no nosso caso, a conexão que criamos no capítulo anterior);
Arguments - Entenderemos esse conceito mais adiante;
Query Template - É o comando SQL que queremos rodar.

Crie uma conexão conforme a figura acima.

Pronto, agora podemos criar um formulário para visualizar esta consulta. Para isso basta ir na console ZMI e clicar em Select type to add... Z Search Interface.

A seguinte janela irá aparecer:

Onde:
Select one or more searchable objects - É o local onde iremos buscar os comandos SQL já criados para gerar o formulário;
Report Id - O nome do relatório;
Report title - O título do relatório;
Report Style - O Estilo do Relatório;
Search Input Id - Caso queira um critério na busca. Iremos falar dele mais a frente;
Seach Input Title - O título do critério de busca;
Gerar DTML Method ou Page Templates - São as formas de criar methods. Neste caso iremos criar DTML Methods.

Preencha os dados e clique em ADD. Pronto! Você já pode consultar valores no seu banco de dados.

Rodando um SELECT com critério

Para realizarmos um SELECT com um critério, por exemplo, todos os ramais do setor x, devemos utilizar os arguments do Zope.

Por exemplo, você gostaria de listar todos os ramais por setor, então crie uma zsql method e na query template coloque:

SELECT * from ramais where setor = "<dtml-var setor>"

e em arguments coloque setor.

Essas informações dizem ao Zope que você vai utilizar a variável setor como critério de busca para sua query SQL.

E no caso de criar um z search interface, basta você colocar setor no campo search input id.

Simples e rápido.

Finalizando

Criar consultas a bancos de dados no Zope é muito simples e rápido. Depois que se pega o jeito pra coisa, vai fácil.

E os exemplos de SELECT também podem se estender a INSERTS, UPDATES, DELETES entre outras queries.

Espero que esse tutorial ajude a achar a luz. Em breve escreverei tutoriais sobre queries avançadas utilizando Zope e MySQL.

Até mais,
Fabio Rizzo Matos
fabrizmat@yahoo.com.br
www.fabiorizzo.tk

Fábio Rizzo Matos

Fábio Rizzo Matos - Membro ativo da Comunidade Python/Zope e Plone, para qual escreve diversos artigos. Arquiteto de Software e Desenvolvedor, trabalha atualmente na ThreePointsWeb (contato@threepointsweb.com), empresa especializada em desenvolvimento e treinamentos Python, Zope e Plone, realizando treinamentos e consultorias em Plone. Mantenedor do site http://www.fabiorizzo.com além de responsável pela tradução de conteúdo.