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.