PyCursos

Pessoal, esqueci de comentar com vocês, leitores deste blog, que estão rolando muitos cursos legais, online e baratos de Python no PyCursos ! Entre eles o curso de Flask, que eu mesmo leciono.

Aproveitem já ! Mas se perderam a turma de agora, não se preocupem, mais turmas irão abrir !

http://pycursos.com/flask

 

Anúncios

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 !…

Flask e MongoDB

Flask webframework

Tenho lido bastante sobre os fw de Python para web e gosto bastante do Django. Porém achei também o FlaskFlask é um microframework web feito em Python. Ele é simples e muito funcional.Com ele conseguimos fazer tudo que precisamos para montar uma ótima aplicação web, de forma ágil. Um ponto interessante é que ele já é integrado com o Jinja2, um ótimo template engine.

Na minha opinião, o Django nos dá um ambiente mais robusto, com muitos controles, e várias integrações já prontas, como banco de dados, template, fluxos, parametrizações, etc e tal.. mas com o Flask conseguimos montar uma app web do jeito que queremos, nos dando mais liberdade para trabalhar, tanto que, o Flask nos dá a possibilidade de instalar várias extensões como flask-csrf, flash-genshi, flash-mail, flash-openid, flask-sqlalchemy e flash-themes por exemplo, fora que podemos criar nossas próprias.

Ele também é compatível com o modelo WSGI, através da toolkit chamada Werkzeug, fazendo que com possamos facilmente utilizá-lo por exemplo através de um Apache, Nginx, e por ai vai…

O Flask está disponível no GitHub, e tem lá uma plicação de exemplo bem interessante: MiniTwit, que é um clone do conhecido Twitter ( http://github.com/mitsuhiko/flask/tree/master/examples/minitwit/ ), que já nos mostra bastante sobre o Flask.

Eu montei uma pequena aplicação de exemplo, utilizando somente o Flask e como banco de dados utilizei o MongoDB, que é um dos mais bem falados banco de dados NoSQL que tenho visto. Segue o link para o Bitckbucket:

Ahh, eu não sei ainda como fazer um clone de uma parte apenas de repositórios Mercurial, então criei um só para esta aplicação de exemplo. E se você souber como fazer isto, pode me ajudar ? Vlw..

hg clone https://berlotto@bitbucket.org/berlotto/flask-mongodb

Para rodar esta aplicação de exemplo, basta baixar o código, e executar o teste.py, mas não esqueça que tem que ter o Flask, MongoDB, pymongo, jinja2 e Werkzeug instalados.