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.
Leave a Reply