{"id":41,"date":"2007-06-11T18:49:02","date_gmt":"2007-06-11T21:49:02","guid":{"rendered":"http:\/\/meiradarocha.jor.br\/news\/2007\/06\/11\/preparando-o-acesso-do-scribus-ao-mysql\/"},"modified":"2008-02-04T20:16:28","modified_gmt":"2008-02-04T23:16:28","slug":"preparando-o-acesso-do-scribus-ao-mysql","status":"publish","type":"post","link":"https:\/\/meiradarocha.jor.br\/news\/2007\/06\/11\/preparando-o-acesso-do-scribus-ao-mysql\/","title":{"rendered":"Preparando o acesso do Scribus ao MySQL"},"content":{"rendered":"<p>Atrav\u00e9s da linguagem <em>script <\/em>embutida no programa de editora\u00e7\u00e3o <strong>Scribus<\/strong>, podemos fazer uma infinidades de a\u00e7\u00f5es. Entre elas, acessar um banco de dados <strong>MySQL<\/strong>, pegar dados que interessam e diagram\u00e1-los automaticamente numa p\u00e1gina.<\/p>\n<p>Por exemplo, podemos fazer uma consulta tipo: &#8220;Selecione todas as mat\u00e9rias na editoria de Economia programados para p\u00e1gina 11 com data da pr\u00f3xima edi\u00e7\u00e3o&#8221;.<\/p>\n<p>Para facilitar as consultas do Python ao MySQL, existe o m\u00f3dulo MySQLdb. Para facilitar ainda mais o uso deste m\u00f3dulos, pode-se criar uma <a href=\"http:\/\/www.devshed.com\/c\/a\/Python\/Database-Programming-in-Python-Accessing-MySQL\/3\/\" title=\"Site com  fun\u00e7\u00e3o explicada passo-a-passo.\">fun\u00e7\u00e3o gen\u00e9rica de chamada ao MySQL<\/a> (confira o original para ver a formata\u00e7\u00e3o do programa. Python tem um lament\u00e1vel e infeliz sistema de indenta\u00e7\u00e3o que pode ser desformatado na Web).<\/p>\n<pre>\r\nimport MySQLdb\r\n classGenericDBOP:\r\n  def __init__(self, db, name):\r\n    self.db = db #database connection\r\n    self.name = name #table name\r\n    lf.dbc = self.db.cursor() #cursor object\r\n    lf.debug=1\r\n\r\n  def __getitem__(self, item):\r\n    self.dbc.execute(\"select * from %s limit %s, 1\" % (self.name, item))\r\n    return self.dbc.fetchone()\r\n\r\n  def _query(self, q):\r\n    if self.debug:\r\n    print \"Query: %s\" % (q)\r\n    self.dbc.execute(q)\r\n\r\n  def __iter__(self):\r\n    \"creates a data set, and returns an iterator (self)\"\r\n    q = \"select * from %s\"  % (self.name)\r\n    self._query(q)\r\n    return self    # an Iterator is an object\r\n    # with a next() method\r\n\r\n  def next(self):\r\n    \"returns the next item in the data set, or tells Python to stop\"\r\n    r = self.dbc.fetchone()\r\n    if not r:# Ok here error is handled and rethrown\r\n    raise StopIteration\r\n    return r<\/pre>\n<p>A classe completa \u00e9 essa. Agora, para testar:<\/p>\n<pre>if __name__==\u2019__main__\u2019:\r\n    db = MySQLdb.connect(user=\"user\", passwd=\"passwd\", db=\"library\")\r\n    books = GenericDBOP (db, \"book\")\r\n    for i in xrange(80, 100):\r\n    print \"Book %s: %s\" % (i, books[i])<\/pre>\n<p>O autor explica que, desde que <strong>__getitem__()<\/strong> foi implementada na classe, podemos acessar o banco de dados como <strong>listas Python<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Veja como acessar bancos de dados MySQL atrav\u00e9s do Scribus scripting language. Os dados<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,5,14,16,4],"tags":[],"class_list":["post-41","post","type-post","status-publish","format-standard","hentry","category-editoracao","category-midias-digitais","category-python","category-scribus","category-tecnologia"],"_links":{"self":[{"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/posts\/41","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/comments?post=41"}],"version-history":[{"count":0,"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/posts\/41\/revisions"}],"wp:attachment":[{"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/media?parent=41"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/categories?post=41"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/meiradarocha.jor.br\/news\/wp-json\/wp\/v2\/tags?post=41"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}