Preparando o acesso do Scribus ao MySQL

Através da linguagem script embutida no programa de editoração Scribus, podemos fazer uma infinidades de ações. Entre elas, acessar um banco de dados MySQL, pegar dados que interessam e diagramá-los automaticamente numa página.

Por exemplo, podemos fazer uma consulta tipo: “Selecione todas as matérias na editoria de Economia programados para página 11 com data da próxima edição”.

Para facilitar as consultas do Python ao MySQL, existe o módulo MySQLdb. Para facilitar ainda mais o uso deste módulos, pode-se criar uma função genérica de chamada ao MySQL (confira o original para ver a formatação do programa. Python tem um lamentável e infeliz sistema de indentação que pode ser desformatado na Web).

import MySQLdb
 classGenericDBOP:
  def __init__(self, db, name):
    self.db = db #database connection
    self.name = name #table name
    lf.dbc = self.db.cursor() #cursor object
    lf.debug=1

  def __getitem__(self, item):
    self.dbc.execute("select * from %s limit %s, 1" % (self.name, item))
    return self.dbc.fetchone()

  def _query(self, q):
    if self.debug:
    print "Query: %s" % (q)
    self.dbc.execute(q)

  def __iter__(self):
    "creates a data set, and returns an iterator (self)"
    q = "select * from %s"  % (self.name)
    self._query(q)
    return self    # an Iterator is an object
    # with a next() method

  def next(self):
    "returns the next item in the data set, or tells Python to stop"
    r = self.dbc.fetchone()
    if not r:# Ok here error is handled and rethrown
    raise StopIteration
    return r

A classe completa é essa. Agora, para testar:

if __name__==’__main__’:
    db = MySQLdb.connect(user="user", passwd="passwd", db="library")
    books = GenericDBOP (db, "book")
    for i in xrange(80, 100):
    print "Book %s: %s" % (i, books[i])

O autor explica que, desde que __getitem__() foi implementada na classe, podemos acessar o banco de dados como listas Python.

About José Antonio Meira da Rocha

Jornalista, professor das áreas de Editoração e de Mídias Digitais na Universidade Federal de Santa Maria, campus cidade de Frederico Westphalen, Rio Grande do Sul, Brasil. Doutor em Design pelo Programa de Pós-Graduação em Design (PGDesign)/Universidade Federal do Rio Grande do Sul (UFRGS), Porto Alegre, Brasil, 2023. Mestre em Mídias pela UNISINOS, São Leopoldo, RS, Brasil, 2003. Especialista em Informática na Educação, Unisinos, 1976.