Gerando QRCode com Python e SQLite

Quem me conhece, sabe que uma frase que eu sempre digo, é: Para conhecer melhor uma linguagem de programação e realmente estudá-la, uma das melhores formas é desenvolver algo com ela. Nada melhor do que sair da teoria e ir para a prática.

A linguagem Python

Python

Seguindo essa linha de pensamento, comecei a procurar algo para desenvolver com Python, já que sempre ouvi falarem bem sobre essa linguagem e sua crescente popularidade, além de usar diversos programas no Linux feitos com ela, e dela ser uma das bases do Google (junto com o Java), inclusive.

O banco de dados SQLite

SQLite

A maioria dos softwares que conhecemos, precisa de um banco de dados para funcionar. Então, pensei em aprender como usar Python com um banco de dados, adicionando o SQLite nessa história, para salvar as frases ou links e dar a opção de escolher com qual conteúdo gerar o QRCode. Escolhi o SQLite, por não ter nada mais fácil de se implementar do que ele, para quem irá rodar o software, além de ser incrivelmente prático e a melhor escolha para softwares desse tipo (pequeno porte), por ser um banco de dados em um arquivo que pode ser copiado junto com o código, facilitando o backup, por exemplo.

O que é um QRCode?

QRCode

QRCode é algo que tem ficado cada vez mais comum nos nossos dias. Você aponta a camera do seu celular pra um QRCode numa revista, jornal, ou até propaganda na parte de trás de uma banca de jornal sobre um novo filme ou seriado, e um software leitor de QRCode no seu celular interpreta essa imagem e te retorna o que ela quer dizer. Pode ser uma frase, um código promocional, um link, etc. No caso da propaganda sobre um novo filme, por exemplo, pode ser o link para você assistir ao trailer do filme no seu celular. No caso de uma propaganda numa revista ou jornal, pode ser um link para você adquirir o produto relacionado através de seu celular, e por aí vai..

Para desenvolver o pyqrcodegenerator, usei um gerador de QRCode encontrado aqui: https://code.google.com/p/pyqrcode/ e desenvolvi o código para automatizar essa geração, primeiramente usando entradas de teclado, depois implementando para usar o conteúdo de um banco de dados, que foi o SQLite.
Apesar de usar o NetBeans para desenvolver com CodeIgniter, estou usando a IDE Aptana Studio para estudar Python.

Aptana Studio 3

O código pode não estar na melhor Python way, por se tratar da primeira coisa que eu fiz em Python, e minha base de conhecimento maior ser de PHP. Portanto, aceito críticas construtivas. (Faça um fork no github, se desejar)

O pyqrcodegenerator roda em Linux. Talvez também em outros Unix-like, ou até no Windows (Não cheguei a testar em outros sistemas). Mas sério, você está lendo esse texto e realmente usa Windows? NO PUEDE SER!

NO PUEDE SER

Para usar o SQLite com o Python, você deve usar o pysqlite2 ou o sqlite3:


from pysqlite2 import dbapi2 as sqlite

ou


from sqlite3 import dbapi2 as sqlite

em seguida, para conectar ao banco de dados:


connection = sqlite.connect('nomedobanco.db')

Obs: Caso o arquivo não exista, será criado automaticamente.

Para fazermos alguma coisa, definimos um cursor


cursor = connection.cursor()

Com o cursor, podemos usar o método execute(), para exercutarmos nossas queries


cursor.execute('CREATE TABLE sentences (id INTEGER PRIMARY KEY AUTOINCREMENT,sentence TEXT)')
sentence = "This is so easy!"
cursor.execute('INSERT INTO sentences VALUES (null, ?)', [sentence])

O método commit() é utilizado para gravar no banco de dados as modificações


connection.commit()

Obs: existe também um método para rollback

Com o método fetchone(), é retornada uma linha de um SELECT


cursor.execute('SELECT * FROM sentences WHERE id = ?', [select_id])
row = cursor.fetchone()

Com o método fetchall(), são retornadas todas as linhas de um SELECT


cursor.execute('SELECT * FROM sentences')
rows = cursor.fetchall()
for row in rows:
	print row[0], '-', row[1] # ID - frase

Para gerar o QRCode com esse conteúdo, do banco de dados, é só pegar o conteúdo de row[1], que é a nossa frase e passar por parâmetro


qr_image = pyqrcode.MakeQRImage(frase_aqui)
qr_image.show()

Mais simples, impossível! ;)

Penso em uma evolução futura, criar uma interface com GTK e/ou Qt, para praticar mais.
Também estou aceitando idéias do que desenvolver para continuar praticando.

Para ver o código completo que eu desenvolvi, acesse no Github:
https://github.com/jonathas/pyqrcodegenerator

Fonte que usei para aprender como usar SQLite com Python:
http://www.devshed.com/c/a/Python/Using-SQLite-in-Python/

Share:

Tags: , , , , , , , ,

domingo, abril 29th, 2012 GNU/Linux, Projetos, Tutoriais

4 Comentários to Gerando QRCode com Python e SQLite

  • Teles disse:

    Dahora, Jon!
    Quer dizer então que para eu enviar minha base de dados para algum amigo preciso apenas passar para ele o arquivo “qrcodegenerator.db” ?
    Abraço

  • Valeu! Sim. Nem precisa de senha, nem nada..

  • Thaíssa disse:

    Oi, Jonathas! Por acaso achei teu blog na lista startup-brasil. Nós não fazemos curso de Espanhol juntos? haha Que coincicência. Abçs.

  • Leave a Reply

    *