SlideShare uma empresa Scribd logo
SQLAlchemy e Plone
  No more ZSQL Methods	
  
            	
  
                                                       	
  
                                           Python Brasil
                                             São Paulo



              Gustavo	
  Lepri	
  
     lepri@simplesconsultoria.com.br	
  
O que é SQL Alchemy?
SQLAlchemy é um toolkit           SQL Python e um
mapeador objeto relacional (ORM - Object Relational
Mapper) que permite        aos desenvolvedores de
aplicações toda a potência e flexibilidade do SQL.




                           Gustavo	
  Lepri	
  
                  lepri@simplesconsultoria.com.br	
  
O que são ZSQL Methods?
	
   ZSQL Methods são um objeto zope similar a um
    DTML Method ou Scripts Python especializados
    para serem usados       com bancos de dados
    relacionais. Eles são o caminho mais fácil para
    conectar o Zope a RDBMS. Contêm comandos
    SQLe DTML em associação.




                          Gustavo	
  Lepri	
  
                 lepri@simplesconsultoria.com.br	
  
Produtos
•    Alchemist
•    collective.saconnect
•    collective.lead
•    z3c.saconfig




                           Gustavo	
  Lepri	
  
                  lepri@simplesconsultoria.com.br	
  
Configuração
•  A configuração da conexão é feita no arquivo
   configure.zcml
•  São utilizadas global utility e local utility
•  Podem ser configuradas conexões globais –
   uma por instância Zope .
•  Ou locais - por site Plone


                          Gustavo	
  Lepri	
  
                 lepri@simplesconsultoria.com.br	
  
 
                                                   configure.zcml
<include package="z3c.saconfig" file="meta.zcml"/>

<db:engine name=“engine.teste.database" url="mysql://
usuario:senha@127.0.0.1/banco_dados?charset=utf8" />
<db:session name=“session.teste.db"
engine=“engine.teste.database" />




                             Gustavo	
  Lepri	
  
                    lepri@simplesconsultoria.com.br	
  
config.py
from sqlalchemy.ext.declarative import declarative_base
from z3c.saconfig import named_scoped_session

Base = declarative_base()
SCOPED_SESSION_NAME = ‘session.teste.db'
session =
named_scoped_session(SCOPED_SESSION_NAME)	
  	
  




                               Gustavo	
  Lepri	
  
                      lepri@simplesconsultoria.com.br	
  
Criação das tabelas
•  A criação das tabelas é realizada pelo disparo na importação
   do profile do produto.
•  Import_steps.xml
<?xml version="1.0"?>
 <import-steps>
  <import-step id=“identificador-create_tables" version="20101020-11“
  handler=“pacote.produto.setuphandlers.create_tables“
  title="Create Base Tables">
 <dependency step="toolset" />
</import-step> </import-steps>




                                  Gustavo	
  Lepri	
  
                         lepri@simplesconsultoria.com.br	
  
 
                 Mapeamento – setuphandlers.py
from z3c.saconfig import named_scoped_session
from pacote.produto.config import Base
                                                                    	
  
from pacote.produto..config import SCOPED_SESSION_NAME

Session = named_scoped_session(SCOPED_SESSION_NAME)

create_tables(context):
  '''Called at profile import time to create necessary tables ''‘
  if isNotOurProfile(context):
     return
  Base.metadata.create_all(bind=Session.bind)




                                     Gustavo	
  Lepri	
  
                            lepri@simplesconsultoria.com.br	
  
Mapeamento	
  
import sqlalchemy as as
[...]                                                              	
  
from pacote.projeto.config import Base

class Projeto(Base):
   """Um projeto""“
   implements(IProjeto)
   __tablename__ = 'projeto‘
   __table_args__ = {'mysql_engine':'InnoDB','mysql_charset':'utf8'}

   projetoid =
sa.Column(sa.INT,nullable=False,index=True,primary_key=True)
   [...]



                                   Gustavo	
  Lepri	
  
                          lepri@simplesconsultoria.com.br	
  
 
          Obrigado!
                  	
   	
  
                        	
  


                             	
  
                             	
  
                             	
  
                             	
  
                             	
  
              Gustavo	
  Lepri
                             	
  
lepri@simplesconsultoria.com.br
                              	
  

Mais conteúdo relacionado

Mais procurados

DELPHI & MySQL - September 2004
DELPHI & MySQL - September 2004DELPHI & MySQL - September 2004
DELPHI & MySQL - September 2004
Michel Alves
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
Flávio Lisboa
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBC
Antonio Passos
 
Php 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosPhp 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies Cabecalhos
Regis Magalhães
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual Studio
Vitor Silva
 
Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
Minicurso: Desenvolvimento na velocidade da luz com Ruby on RailsMinicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
Luiz Carvalho
 
Aula 11 - Controle de sessão em PHP - Programação Web
Aula 11  - Controle de sessão em PHP - Programação WebAula 11  - Controle de sessão em PHP - Programação Web
Aula 11 - Controle de sessão em PHP - Programação Web
Dalton Martins
 
Python e bancos NoSQL
Python e bancos NoSQLPython e bancos NoSQL
Python e bancos NoSQL
Marinho Brandão
 
Plugin zend acl
Plugin zend aclPlugin zend acl
Plugin zend acl
Douglas Lira
 
JDBC
JDBCJDBC
Ecommerce, mais simples do que parece
Ecommerce, mais simples do que pareceEcommerce, mais simples do que parece
Ecommerce, mais simples do que parece
Michael Castillo Granados
 
Bread board
Bread boardBread board
Bread board
André Walker
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
Regis Magalhães
 
Maonamassa Pga
Maonamassa PgaMaonamassa Pga
Maonamassa Pga
Michael Macêdo
 
PHP e Mysql - UPDATE
PHP e Mysql - UPDATEPHP e Mysql - UPDATE
PHP e Mysql - UPDATE
Marco Pinheiro
 
Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4
Carlos Santos
 
Aula09 phonegap storage_connection
Aula09 phonegap storage_connectionAula09 phonegap storage_connection
Aula09 phonegap storage_connection
Roberson Alves
 
Kernel driver
Kernel driverKernel driver
Kernel driver
Luiz Francisco Bozo
 

Mais procurados (18)

DELPHI & MySQL - September 2004
DELPHI & MySQL - September 2004DELPHI & MySQL - September 2004
DELPHI & MySQL - September 2004
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBC
 
Php 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies CabecalhosPhp 03 Sessoes Cookies Cabecalhos
Php 03 Sessoes Cookies Cabecalhos
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual Studio
 
Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
Minicurso: Desenvolvimento na velocidade da luz com Ruby on RailsMinicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
Minicurso: Desenvolvimento na velocidade da luz com Ruby on Rails
 
Aula 11 - Controle de sessão em PHP - Programação Web
Aula 11  - Controle de sessão em PHP - Programação WebAula 11  - Controle de sessão em PHP - Programação Web
Aula 11 - Controle de sessão em PHP - Programação Web
 
Python e bancos NoSQL
Python e bancos NoSQLPython e bancos NoSQL
Python e bancos NoSQL
 
Plugin zend acl
Plugin zend aclPlugin zend acl
Plugin zend acl
 
JDBC
JDBCJDBC
JDBC
 
Ecommerce, mais simples do que parece
Ecommerce, mais simples do que pareceEcommerce, mais simples do que parece
Ecommerce, mais simples do que parece
 
Bread board
Bread boardBread board
Bread board
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Maonamassa Pga
Maonamassa PgaMaonamassa Pga
Maonamassa Pga
 
PHP e Mysql - UPDATE
PHP e Mysql - UPDATEPHP e Mysql - UPDATE
PHP e Mysql - UPDATE
 
Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4Aula 01 PHP+MySQL - LabMM4
Aula 01 PHP+MySQL - LabMM4
 
Aula09 phonegap storage_connection
Aula09 phonegap storage_connectionAula09 phonegap storage_connection
Aula09 phonegap storage_connection
 
Kernel driver
Kernel driverKernel driver
Kernel driver
 

Semelhante a SQLAlchemy e Plone: no more zsql methods

Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)
Cristiano Rafael Steffens
 
Palestra
PalestraPalestra
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
Fabrízio Mello
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
antonio sérgio nogueira
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
julianabdpaiva
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
Campus Party Brasil
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Carlos Duarte do Nascimento
 
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeZabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Igor Nicoli
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
Guilherme Blanco
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
Marcelo Rodrigo
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
Giovanni Bassi
 
Odi tutorial configuração repositórios mestre e trabalho
Odi tutorial   configuração repositórios mestre e trabalhoOdi tutorial   configuração repositórios mestre e trabalho
Odi tutorial configuração repositórios mestre e trabalho
Caio Lima
 
Implementação de
Implementação de Implementação de
Implementação de
Rômulo Jales
 
Testes Funcionais Orientado a Imagem - Sikuli
Testes Funcionais Orientado a Imagem - SikuliTestes Funcionais Orientado a Imagem - Sikuli
Testes Funcionais Orientado a Imagem - Sikuli
Vanilton Pinheiro
 
jQuery
jQueryjQuery
jQuery
Bruno Cunha
 
jQuery
jQueryjQuery
jQuery
Bruno Cunha
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 Palestra
David O'Keefe
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
Pablo Dall'Oglio
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
Lucas Augusto Carvalho
 
Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010
Fabrízio Mello
 

Semelhante a SQLAlchemy e Plone: no more zsql methods (20)

Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)
 
Palestra
PalestraPalestra
Palestra
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01Livropythonmysql 091022073751-phpapp01
Livropythonmysql 091022073751-phpapp01
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividadeZabbix Conference LatAm 2019 - Automação: Ganhando produtividade
Zabbix Conference LatAm 2019 - Automação: Ganhando produtividade
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Odi tutorial configuração repositórios mestre e trabalho
Odi tutorial   configuração repositórios mestre e trabalhoOdi tutorial   configuração repositórios mestre e trabalho
Odi tutorial configuração repositórios mestre e trabalho
 
Implementação de
Implementação de Implementação de
Implementação de
 
Testes Funcionais Orientado a Imagem - Sikuli
Testes Funcionais Orientado a Imagem - SikuliTestes Funcionais Orientado a Imagem - Sikuli
Testes Funcionais Orientado a Imagem - Sikuli
 
jQuery
jQueryjQuery
jQuery
 
jQuery
jQueryjQuery
jQuery
 
Lampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 PalestraLampada Php Conference Brasil 2007 Palestra
Lampada Php Conference Brasil 2007 Palestra
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010Oficina postgresql basico_consegi2010
Oficina postgresql basico_consegi2010
 

Mais de Simples Consultoria

Diazo para todos
Diazo para todosDiazo para todos
Diazo para todos
Simples Consultoria
 
Plone: Funcionalidades que todo gestor de conteúdo Plone deveria saber
Plone: Funcionalidades que todo gestor de conteúdo Plone deveria saberPlone: Funcionalidades que todo gestor de conteúdo Plone deveria saber
Plone: Funcionalidades que todo gestor de conteúdo Plone deveria saber
Simples Consultoria
 
PloneGov.Br: Cadê o .br que estava aqui?
PloneGov.Br: Cadê o .br que estava aqui?PloneGov.Br: Cadê o .br que estava aqui?
PloneGov.Br: Cadê o .br que estava aqui?
Simples Consultoria
 
V de Vinagre: A história por trás da história do momento que mudou o Brasil
V de Vinagre: A história por trás da história do momento que mudou o BrasilV de Vinagre: A história por trás da história do momento que mudou o Brasil
V de Vinagre: A história por trás da história do momento que mudou o Brasil
Simples Consultoria
 
Collective.cover: one year later
Collective.cover: one year laterCollective.cover: one year later
Collective.cover: one year later
Simples Consultoria
 
Plone 5: Você ainda vai ter um!
Plone 5: Você ainda vai ter um!Plone 5: Você ainda vai ter um!
Plone 5: Você ainda vai ter um!
Simples Consultoria
 
Primeiros passos com Plone, o CMS Pythonico
Primeiros passos com Plone, o CMS PythonicoPrimeiros passos com Plone, o CMS Pythonico
Primeiros passos com Plone, o CMS Pythonico
Simples Consultoria
 
Python como primeira linguagem de programação
Python como primeira linguagem de programaçãoPython como primeira linguagem de programação
Python como primeira linguagem de programação
Simples Consultoria
 
O Estado do Plone - FISL 14
O Estado do Plone - FISL 14O Estado do Plone - FISL 14
O Estado do Plone - FISL 14
Simples Consultoria
 
O Futuro do Plone (RuPy-Br)
O Futuro do Plone (RuPy-Br)O Futuro do Plone (RuPy-Br)
O Futuro do Plone (RuPy-Br)
Simples Consultoria
 
O Futuro do Plone (PythonBrasil[8])
O Futuro do Plone (PythonBrasil[8])O Futuro do Plone (PythonBrasil[8])
O Futuro do Plone (PythonBrasil[8])
Simples Consultoria
 
Lenguaje, framework, comunidad y cuenta bancaria: De teoría hasta la práctica
Lenguaje, framework,  comunidad y cuenta bancaria: De teoría hasta la prácticaLenguaje, framework,  comunidad y cuenta bancaria: De teoría hasta la práctica
Lenguaje, framework, comunidad y cuenta bancaria: De teoría hasta la práctica
Simples Consultoria
 
Cómo Brasil está construyendo una nación digital con código abierto y Python
Cómo Brasil está construyendo una nación digital con código abierto y PythonCómo Brasil está construyendo una nación digital con código abierto y Python
Cómo Brasil está construyendo una nación digital con código abierto y Python
Simples Consultoria
 
Gestión de Contenido con Plone
Gestión de Contenido con PloneGestión de Contenido con Plone
Gestión de Contenido con Plone
Simples Consultoria
 
Plone.gov.br: Or how to leverage Plone in the Brazilian Government
Plone.gov.br: Or how to leverage Plone in the Brazilian GovernmentPlone.gov.br: Or how to leverage Plone in the Brazilian Government
Plone.gov.br: Or how to leverage Plone in the Brazilian Government
Simples Consultoria
 
Collective Cover
Collective CoverCollective Cover
Collective Cover
Simples Consultoria
 
O Futuro do Plone
O Futuro do PloneO Futuro do Plone
O Futuro do Plone
Simples Consultoria
 
Criando Temas com Diazo
Criando Temas com DiazoCriando Temas com Diazo
Criando Temas com Diazo
Simples Consultoria
 
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
Simples Consultoria
 
O Futuro do Plone
O Futuro do PloneO Futuro do Plone
O Futuro do Plone
Simples Consultoria
 

Mais de Simples Consultoria (20)

Diazo para todos
Diazo para todosDiazo para todos
Diazo para todos
 
Plone: Funcionalidades que todo gestor de conteúdo Plone deveria saber
Plone: Funcionalidades que todo gestor de conteúdo Plone deveria saberPlone: Funcionalidades que todo gestor de conteúdo Plone deveria saber
Plone: Funcionalidades que todo gestor de conteúdo Plone deveria saber
 
PloneGov.Br: Cadê o .br que estava aqui?
PloneGov.Br: Cadê o .br que estava aqui?PloneGov.Br: Cadê o .br que estava aqui?
PloneGov.Br: Cadê o .br que estava aqui?
 
V de Vinagre: A história por trás da história do momento que mudou o Brasil
V de Vinagre: A história por trás da história do momento que mudou o BrasilV de Vinagre: A história por trás da história do momento que mudou o Brasil
V de Vinagre: A história por trás da história do momento que mudou o Brasil
 
Collective.cover: one year later
Collective.cover: one year laterCollective.cover: one year later
Collective.cover: one year later
 
Plone 5: Você ainda vai ter um!
Plone 5: Você ainda vai ter um!Plone 5: Você ainda vai ter um!
Plone 5: Você ainda vai ter um!
 
Primeiros passos com Plone, o CMS Pythonico
Primeiros passos com Plone, o CMS PythonicoPrimeiros passos com Plone, o CMS Pythonico
Primeiros passos com Plone, o CMS Pythonico
 
Python como primeira linguagem de programação
Python como primeira linguagem de programaçãoPython como primeira linguagem de programação
Python como primeira linguagem de programação
 
O Estado do Plone - FISL 14
O Estado do Plone - FISL 14O Estado do Plone - FISL 14
O Estado do Plone - FISL 14
 
O Futuro do Plone (RuPy-Br)
O Futuro do Plone (RuPy-Br)O Futuro do Plone (RuPy-Br)
O Futuro do Plone (RuPy-Br)
 
O Futuro do Plone (PythonBrasil[8])
O Futuro do Plone (PythonBrasil[8])O Futuro do Plone (PythonBrasil[8])
O Futuro do Plone (PythonBrasil[8])
 
Lenguaje, framework, comunidad y cuenta bancaria: De teoría hasta la práctica
Lenguaje, framework,  comunidad y cuenta bancaria: De teoría hasta la prácticaLenguaje, framework,  comunidad y cuenta bancaria: De teoría hasta la práctica
Lenguaje, framework, comunidad y cuenta bancaria: De teoría hasta la práctica
 
Cómo Brasil está construyendo una nación digital con código abierto y Python
Cómo Brasil está construyendo una nación digital con código abierto y PythonCómo Brasil está construyendo una nación digital con código abierto y Python
Cómo Brasil está construyendo una nación digital con código abierto y Python
 
Gestión de Contenido con Plone
Gestión de Contenido con PloneGestión de Contenido con Plone
Gestión de Contenido con Plone
 
Plone.gov.br: Or how to leverage Plone in the Brazilian Government
Plone.gov.br: Or how to leverage Plone in the Brazilian GovernmentPlone.gov.br: Or how to leverage Plone in the Brazilian Government
Plone.gov.br: Or how to leverage Plone in the Brazilian Government
 
Collective Cover
Collective CoverCollective Cover
Collective Cover
 
O Futuro do Plone
O Futuro do PloneO Futuro do Plone
O Futuro do Plone
 
Criando Temas com Diazo
Criando Temas com DiazoCriando Temas com Diazo
Criando Temas com Diazo
 
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...Criando temas para Joomla, Wordpress, Drupal e tudo mais  sem tocar em templa...
Criando temas para Joomla, Wordpress, Drupal e tudo mais sem tocar em templa...
 
O Futuro do Plone
O Futuro do PloneO Futuro do Plone
O Futuro do Plone
 

SQLAlchemy e Plone: no more zsql methods

  • 1. SQLAlchemy e Plone No more ZSQL Methods       Python Brasil São Paulo Gustavo  Lepri   lepri@simplesconsultoria.com.br  
  • 2. O que é SQL Alchemy? SQLAlchemy é um toolkit SQL Python e um mapeador objeto relacional (ORM - Object Relational Mapper) que permite aos desenvolvedores de aplicações toda a potência e flexibilidade do SQL. Gustavo  Lepri   lepri@simplesconsultoria.com.br  
  • 3. O que são ZSQL Methods?   ZSQL Methods são um objeto zope similar a um DTML Method ou Scripts Python especializados para serem usados com bancos de dados relacionais. Eles são o caminho mais fácil para conectar o Zope a RDBMS. Contêm comandos SQLe DTML em associação. Gustavo  Lepri   lepri@simplesconsultoria.com.br  
  • 4. Produtos •  Alchemist •  collective.saconnect •  collective.lead •  z3c.saconfig Gustavo  Lepri   lepri@simplesconsultoria.com.br  
  • 5. Configuração •  A configuração da conexão é feita no arquivo configure.zcml •  São utilizadas global utility e local utility •  Podem ser configuradas conexões globais – uma por instância Zope . •  Ou locais - por site Plone Gustavo  Lepri   lepri@simplesconsultoria.com.br  
  • 6.   configure.zcml <include package="z3c.saconfig" file="meta.zcml"/> <db:engine name=“engine.teste.database" url="mysql:// usuario:senha@127.0.0.1/banco_dados?charset=utf8" /> <db:session name=“session.teste.db" engine=“engine.teste.database" /> Gustavo  Lepri   lepri@simplesconsultoria.com.br  
  • 7. config.py from sqlalchemy.ext.declarative import declarative_base from z3c.saconfig import named_scoped_session Base = declarative_base() SCOPED_SESSION_NAME = ‘session.teste.db' session = named_scoped_session(SCOPED_SESSION_NAME)     Gustavo  Lepri   lepri@simplesconsultoria.com.br  
  • 8. Criação das tabelas •  A criação das tabelas é realizada pelo disparo na importação do profile do produto. •  Import_steps.xml <?xml version="1.0"?> <import-steps> <import-step id=“identificador-create_tables" version="20101020-11“ handler=“pacote.produto.setuphandlers.create_tables“ title="Create Base Tables"> <dependency step="toolset" /> </import-step> </import-steps> Gustavo  Lepri   lepri@simplesconsultoria.com.br  
  • 9.   Mapeamento – setuphandlers.py from z3c.saconfig import named_scoped_session from pacote.produto.config import Base   from pacote.produto..config import SCOPED_SESSION_NAME Session = named_scoped_session(SCOPED_SESSION_NAME) create_tables(context): '''Called at profile import time to create necessary tables ''‘ if isNotOurProfile(context): return Base.metadata.create_all(bind=Session.bind) Gustavo  Lepri   lepri@simplesconsultoria.com.br  
  • 10. Mapeamento   import sqlalchemy as as [...]   from pacote.projeto.config import Base class Projeto(Base): """Um projeto""“ implements(IProjeto) __tablename__ = 'projeto‘ __table_args__ = {'mysql_engine':'InnoDB','mysql_charset':'utf8'} projetoid = sa.Column(sa.INT,nullable=False,index=True,primary_key=True) [...] Gustavo  Lepri   lepri@simplesconsultoria.com.br  
  • 11.   Obrigado!                 Gustavo  Lepri   lepri@simplesconsultoria.com.br