Генераторы словаря данных для PostgreSQL для объединения Wiki - PullRequest
7 голосов
/ 07 июля 2011

Я ищу инструмент, который берет таблицы PostgreSQL и выводит словарь данных в формате вики (предпочтительно Confluence). Похоже, что большинству инструментов для выполнения этой задачи требуется много ручной работы / несколько инструментов (IE> SchemaSpy, DB Visual Architect, плагины Confluence для получения выведенного HTML DD и преобразования в Confluence). Я ищу ОДИН инструмент, который сканирует мои таблицы Postgres и выводит дружественный к вики словарь данных, который обеспечит бесперебойное обслуживание при изменении БД без необходимости обновлять мою базу данных и схему БД в другом инструменте.

Ответы [ 2 ]

1 голос
/ 25 апреля 2012

Существует плагин Блоу Свифта Confluence, который позволяет отображать данные, полученные из запроса SQL, на странице слияния. в виде таблицы .. может быть, это стоит посмотреть для вас?

Версии Confluence 3.1.x - 4.9.x в настоящее время поддерживаются ...

Плагин является бесплатным и может быть загружен с биржи плагинов Atlassian: https://plugins.atlassian.com/plugins/org.swift.confluence.sql

Дополнительную информацию о плагине можно найти здесь: https://studio.plugins.atlassian.com/wiki/display/SQL/Confluence+SQL+Plugin

0 голосов
/ 12 декабря 2012

Я думаю, вам придется написать это самостоятельно, но это довольно легко и весело.Я предполагаю, что Python здесь.

Мне нравится интерфейс Confluence XML-RPC.Для этого см. http://goo.gl/KCt3z. Удаленные методы, о которых вы заботитесь, скорее всего, login, getPage, setPage и / или updatePage.Этот скелет будет выглядеть так:

import xmlrpclib

server = xmlrpclib.Server(opts.url)
conn = server.confluence1
token = conn.login(opts.username, opts.password)
page = conn.getPage(token,'PageSpace',page_title)
page = page + table
page = conn.updatePage(token,page,update_options)

table вот данные из таблиц PG.Мы создадим это ниже.

Для получения простых данных из PostgreSQL я чаще всего использую psycopg2 (также рассмотрим SQLSoup).Независимо от того, как вы выбираете данные, вы получите список строк в виде словаря.Часть базы данных, вероятно, будет выглядеть так:

import psycopg2, psycopg2.extras

conn = psycopg2.connect("dbname=reece")
cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
cur.execute('SELECT * FROM sometable')
rows = cur.fetchall()

Теперь вам нужно отформатировать данные.Для простых вещей, оператор print = будет работать.Для более сложного форматирования рассмотрим шаблонизатор, например jinja2 (http://jinja.pocoo.org/). Код рендеринга может выглядеть так:

from jinja2 import Template
template = Template(open(template_path).read())
table = template.render( rows = rows )

Файл template_path будет содержать шаблон форматирования, который может выглядеть следующим образом:

<table>
<tr>
  <th>col header 1</th>
  <th>col header 2</th>
</tr>

{% for row in rows|sort -%}
<tr>
  <td>{{row.col1}}</td>
  <td>{{row.col2}}</td>
</tr>
{% endfor %}

</table>

Примечание: Confluence больше не использует вики-разметку по умолчанию. Вы должны писать HTML.

Наконец, если вы хотите создать страницу для всех таблиц, вы можете посмотреть на information_schema, которая содержитинформация о базе данных в виде таблиц. Например:

select table_name from information_schema.tables where table_schema = current_schema();
...