sqlalchemy e plone: no more zsql methods

11

Click here to load reader

Upload: simples-consultoria

Post on 19-May-2015

1.203 views

Category:

Technology


3 download

DESCRIPTION

No dia-a-dia precisamos acessar as informações que estão em bancos de dados relacionais, seja para gerar relatórios, seja para exibir dados de outros sistemas.Faça essa integração de forma transparente, ágil e eficiente utilizando SQLAlchemy.

TRANSCRIPT

Page 1: SQLAlchemy e Plone: no more zsql methods

SQLAlchemy e Plone No more ZSQL Methods  

   

Python Brasil São Paulo

Gustavo  Lepri  [email protected]  

Page 2: SQLAlchemy e Plone: no more zsql methods

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  [email protected]  

Page 3: SQLAlchemy e Plone: no more zsql methods

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  [email protected]  

Page 4: SQLAlchemy e Plone: no more zsql methods

Produtos

•  Alchemist •  collective.saconnect •  collective.lead •  z3c.saconfig

Gustavo  Lepri  [email protected]  

Page 5: SQLAlchemy e Plone: no more zsql methods

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  [email protected]  

Page 6: SQLAlchemy e Plone: no more zsql methods

configure.zcml  <include package="z3c.saconfig" file="meta.zcml"/> <db:engine name=“engine.teste.database" url="mysql://usuario:[email protected]/banco_dados?charset=utf8" /> <db:session name=“session.teste.db" engine=“engine.teste.database" />

Gustavo  Lepri  [email protected]  

Page 7: SQLAlchemy e Plone: no more zsql methods

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  [email protected]  

Page 8: SQLAlchemy e Plone: no more zsql methods

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  [email protected]  

Page 9: SQLAlchemy e Plone: no more zsql methods

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  [email protected]  

Page 10: SQLAlchemy e Plone: no more zsql methods

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  [email protected]  

Page 11: SQLAlchemy e Plone: no more zsql methods

Obrigado!      

           

Gustavo  Lepri  [email protected]