Ferramentas Pessoais
Você está aqui: Página Inicial Artigos Criando uma aplicação usando MySql

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 mysql
# useradd -g mysql mysql
Descompactar o MySQL:
# cd /usr/local
# gunzip < /tmp/mysql-standard-5.0.22-pc-linux-i686.tar.gz | tar xvf -
Criar o link para MySQL:
# ln -s /tmp/mysql-standard-5.0.22-pc-linux-i686 mysql
# cd mysql
Executar o script para instalação do banco:
# scripts/mysql_install_db --user=mysql 
Setando algumas permissões:
# chown -R root
# chown -R mysql data
# chgrp -R mysql
Iniciar o banco de dados:
# 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 /tmp
$ 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
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://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 /tmp
# tar zxvf ZMySQLDA-2.0.8.tar.gz
# mv lib/python/Products/ZMySQLDA /a/instacia/do/seu/zope/Products/ZMySQLDA
Inicie o seu servidor Zope/Plone. Até agora vimos como instalar os pré-requisitos para a nossa aplicação funcionar.

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:
mysql
Caso 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.