Python cx_Oracle e unicode

outubro 31st, 2008

Fazendo alguns scripts de migração com SQLAlchemy tive problemas com os resultados das queries.

Acontece que todos os resultados que possuem caracteres especiais vinham com "?".

Por exemplo, se nos resultados tivesse o nome João, vinha "Jo?o".

A princípio acreditei ser algo relacionado à configuração do SQLAlchemy, mas depois descobri que o problema está relacionado ao ambiente do oracle.

Para resolver o problema, basta definir a variável que ambiente que será usada pelas bibliotecas compartilhadas do Oracle:

NLS_LANG

 

Exemplo:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
from sqlalchemy import *
from sqlalchemy.sql import *

os.environ["NLS_LANG"] = ".UTF8"

engine = create_engine(’oracle://usuario:senha@tnsentry’,
                       encoding=’utf8′,
                       convert_unicode=True)

metadata = MetaData(bind=engine)

connection = engine.connect()

user = Table(’table_user’, db.metadata,
                Column(’user_id’, Integer, nullable=False),
                Column(’user_name’, Unicode(200)))

query = select([user.c.user_name]).\
                where((user.c.user_name.like(’%Pereira%’))). \
                      order_by(user.c.user_name.desc()).limit(10)

for x in db.connection.execute(query).fetchall():
    print x[0]

 

Feliz aniversário N3RD3X!

outubro 27th, 2008

 

Por volta de junho de 2007 conheci um "moleque" de 14 anos completamente entusiasmado com "linux",

em pouco tempo ele já entendia que sua paixão era por "software livre" e não somente "linux".

Dentro de um período menor ainda, já estava aprendendo python e resolveu criar um software livre para gerenciamento de lan houses.

Hoje o tenho como um grande hacker, domina GTK, domina Python, conhece muito sobre o core do GNOME, e já sabe brincar bastante com a glib em geral, principalmente GObject.

Esse "moleque", Wilson Pinto Júnior, de Corumbá de Goiás hoje faz 16 anos e eu quero te dar os meus parabéns!

Que você continue evoluindo nessa velocidade incrível e continue se tornando um hacker de primeira linha, contribuindo para projetos livres etc.

Sem dúvida é uma grande pessoa e será um grande profissional, já consigo até imaginar uma carreira brilhante :)

Tenho orgulho de ser amigo de um cara desses!

Feliz aniversário meu amigo!