Sobre Sérgio

Sou desenvolvedor desde 1998, atualmente desenvolvo Java, estudo e desenvolvo paralelamente Python, sou usuário de Arch desde 2009 e Linux desde 2003 efetivamente. Sou marido e pai também !

Migração do Blog

Olá pessoal, estou passando aqui somente para dizer que a partir de agora estarei postando sobre todos os assuntos, inclusive Python, no meu blog pessoal: http://berlotto.blog.br.
Só lembrando que este aqui não será descontinuado, somente estará parado.

Podem acompanhar também meu outro site: http://berlotto.net.

Qualquer coisa me achem no twitter ou facebook.

Abraços.

Utilizando o SQLAlchemy no Flask com MySQL

Quando tentei utilizar esta combinação, seguindo justamente o howto do site do Flask, me ocorria um erro depois de um tempo em que a conexão não era utilizada:

SqlAlchemy: SQLError: (OperationalError) (2006, ‘MySQL server has gone away’)

E como resolver isto ? Em vários posts por ai vi o pessoal utilizando-se da configuração “pool_recycle” para deixar a conexão mais tempo no ar, tentando colocar a conexão na sessão, e tudo mais… nada funcionou!

Só consegui resolver isto do modo pessimista, adicionando o seguinte código no database.py:

from sqlalchemy import exc
from sqlalchemy import event
from sqlalchemy.pool import Pool

@event.listens_for(Pool, "checkout")
def ping_connection(dbapi_connection, connection_record, connection_proxy):
    cursor = dbapi_connection.cursor()
    try:
        cursor.execute("SELECT 1")
    except:
        # optional - dispose the whole pool
        # instead of invalidating one at a time
        # connection_proxy._pool.dispose()

        # raise DisconnectionError - pool will try
        # connecting again up to three times before raising.
        raise exc.DisconnectionError()
    cursor.close()

E voialá ! Funcionou !…

Novos rumos: Pyramid

Ontem tive meu primeiro contato real com o Pyramid!

Depois de trabalhar várias vezes com o Django, de conhecer bem ele, suas várias features e tudo mais, acabei precisando de um framework mais flexível para meu projeto que quero desenvolver, e que, não saiu ainda do papel por que em certo ponto do desenvolvimento tudo se tornava massante e trabalhoso.

Mas eu realmente vi uma luz no fim do tunel com o Pyramid. Se mostrou um fw simples, consistente e flexível. Não tive trabalho algum para iniciar um projeto e sair programando algo mais simples, como criar uma outra view além da default, bastou utilizar uma meia-hora e dar uma passada de olho na documentação.

Claro que, eu não fiz nada demais, apenas iniciei o projeto, fiz algumas alterações, tomei conhecimento do ambiente gerado por ele, rodei o ambiente de desenvolvimento, estas coisas. A partir de agora é trabalhar para aprender mais e mais deste frameworks que pelo visto vai me facilitar a vida.

Outra coisa, eu achei muito simples trabalhar com o mongodb juntamente com o Pyramid. Praticamente não necessita de configuração, é só chamar e usar.. hehehe Mas um detalhe que me deixou meio triste foi que não funcionou o projeto com o template para utilizar o Jinja2 como renderer dos templates web. Gosto muito do Jinja2 pelas facilidades, e principalmente pela herança de templates possível, onde você cria uma página com seções definidas e pode criar outras páginas que herdam esta página e imprimem somente nas seções que deseja.. mas o template engine do Pyramid, que veio do Pylons, não é tão mal assim, mas é mais trabalhoso, pois trabalha com umas tags no meio do html, e não me pareceu muito pythônico. Tudo bem !

Bom , é isto por enquanto, depois posto aqui como iniciar um projeto simples com o Pyramid + MongoDB ! Ok !

Abraços !

Outros sites de “gincana” de programação

Fica ai então a dica, do amigo leitor Guaracy, de outros dois sites equivalentes ao Project Euler.

São eles: http://rosettacode.orghttp://www.pythonchallenge.com/

O Python Challenge é um pouco diferente na forma de apresentar as questões, pois você tem que resolver uma para depois ter a próxima disponível, além de ser direcionado a programação Python mesmo. Fora isto, aprenderemos muito igualmente aos outros !

Aproveitem !