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 MatosPara 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
- PyODConverter - Conversão em batch de formato de documentosPython
- Plone: Quais templates e CSS controlam o que você vê e onde eles estão localizadosPython
- Web Services - criação, publicação e clientesWeb Services
- Introdução ao PyGamePython
- Automatização de tarefas do OpenOffice usando o PythonPython