Criando uma aplicação usando MySql
Neste artigo vamos construir uma aplicação no Zope e salvando os
dados no banco de dados MySql. Está é uma aplicação bem simples de como
usar o zope conectado a um banco relacional, e ela terá duas tabelas,
aonde iremos executar operações de SELECT, INSERT, UPDATE e DELETE nos
dados. Partindo do principio que você já tenha instalado o Zope e o
Plone, vamos instalar o banco de dados MySql, o python-mysql e o
conector do zope ZMySQLDA para depois iniciarmos a nossa
aplicação. Está aplicação está sendo construida usando o sistema
operacinal Debian.
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, faça o download no site: http://www.mysql.com. Copie o arquivo do mysql 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 mysqlDescompactar o MySQL:
# useradd -g mysql mysql
# cd /usr/localCriar o link para MySQL:
# gunzip < /tmp/mysql-standard-5.0.22-pc-linux-i686.tar.gz | tar xvf -
# ln -s /tmp/mysql-standard-5.0.22-pc-linux-i686 mysqlExecutar o script para instalação do banco:
# cd mysql
# scripts/mysql_install_db --user=mysqlSetando algumas permissões:
# chown -R rootIniciar o banco de dados:
# chown -R mysql data
# chgrp -R mysql
# bin/mysqld_safe --user=mysql &Se não ocorreu 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://sourceforge.net/projects/mysql-python
Baixe o arquivo no diretório /tmp e execute os seguintes comandos:
$ cd /tmpSe nenhum erro ocorreu, você já esta com o suporte do MySQL no Python. Vamos instalar agora o suporte no Zope/Plone.
$ tar xvf MySQL-python-1.2.1_p2.tar.gz
$ cd MySQL-python-1.2.1
$ export mysqlversion="5.0.22"
# Ou a sua versão instalada
$ export mysqlclient="mysqlclient_r"
$ export mysqloptlibs="ssl crypto"
$ python setup.py build
$ su
# python setup.py install
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://www.zope.org/Members/adustman/Products/ZMySQLDA
E copie para /tmp. Verifique se o servidor Zope não esta no ar, se estiver, dê um shutdown nele.
Execute os seguintes comandos:
# cd /tmpInicie o seu servidor Zope/Plone. Até agora vimos como instalar os pré-requisitos para a nossa aplicação funcionar.
# tar zxvf ZMySQLDA-2.0.8.tar.gz
# mv lib/python/Products/ZMySQLDA /a/instacia/do/seu/zope/Products/ZMySQLDA
Conectando ao banco de dados MySQL
O primeiro passo é verificarmos se o nosso MySql está rodando. Se estiver rodando vamos acessar o prompt do MySql e criar a nossa base de dados. Para acessar abra um terminal, faça o login como root e digte a seguinte linha:mysqlCaso o seu banco de dados possu uma senha, os sistema vai te requistar. Mais como a nossa instalação do nosso mysql é padrão, por default ele não possui senha para root.
Criando uma base de dados:
create database financeiro;Acessando a base de dados:
use financeiro;Criando o esquema das tabelas:
CREATE TABLE empresas (codigo integer auto_increment,nome varchar(50),
descricao varchar(50),primary key(codigo)) type=innodb;
CREATE TABLE pessoas (codigo integer auto_increment,nome varchar(50), empresa integer,
salario real, primary key(codigo),foreign key(empresa)
references empresas (codigo)) type=innodb;
Agora nós vamos criar a nossa conexão do zope com a nossa base dados. Vá até a ZMI e adicione um Z MySQL Database Connection, vai aparecer a seguinte tela:
tela_do_zsql_1.gif
No campo Connect immediately coloque as informações sobre o seu banco neste artigo a linha ficará assim: financeiro root.
A sintaxe deste comando é a seguinte: database user password. Caso não tenha acontecido nenhum erro, sua conexão foi criada com sucesso.
Cadastrando dados
O
primeiro passo do nossa aplicação é criar um formulário para incluir
empresas e outro para incluir pessoas. Mais antes de criar o nosso
formulario, vamos criar a nosso ZSQL Method, este método é responsavel por executar query's. Vamos criar o nosso método para incluir empresas, e na nossa query de INSERT vamos receber dois parametros, conforme a tela abaixo:
tela_do_zsql_2.gif
Códido:INSERT INTO empresas (nome,descricao) values (
<dtml-sqlvar name="nome" type="string">,
<dtml-sqlvar name="descricao" type="string">
);
Descrição dos campos:
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;
Arguments: O argumentos que iremos passar para nossa query;
Query Template: É o comando SQL que queremos rodar.
Crie uma conexão conforme a figura acima. Até agora criamos o método
que vai inserir os dados que viram do nosso formulário. O próximo passo
é cria o nosso formulario, na ZMI vamos adicionar uma Z Search
Interface, que é responsável por criar página que o usuário irá digitar os dados e a página de retorno do formulário;
Rodando um SELECT
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 com os seguintes campos:
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.
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 com os seguintes campos:
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 Page Templates.
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 as pessoas da empresa X, então crie uma zsql method e na query template coloque:
SELECT * from pessoas where empresa = '<dtml-var empresa>'
e em arguments coloque empresa.
Essas informações dizem ao Zope que você vai utilizar a variável empresa como critério de busca para sua query SQL.
E no caso de criar um z search interface, basta você colocar emrpesa no campo search input id.