sqlalchemy e plone: no more zsql methods
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
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]
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]
Produtos
• Alchemist • collective.saconnect • collective.lead • z3c.saconfig
Gustavo Lepri [email protected]
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]
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]
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]
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]
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]
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]