Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 12, 2009 00:24:44

kvazar
От:
Зарегистрирован: 2009-01-05
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

список таблиц в postgres

Здравствуйте, всем.
Осваиваю потихоньку питон 3.0.
Поскольку для этой версии, как я понял нет модуля для mySql с которой я до этого всегда работал.
Решил воспользоваться Postgres.Раньше с ней не работал.
Возникла проблема с выводом списка таблиц в базе. В mysql, если я правильно помню есть SHOW TABLES.
Здесь такое не работает.. как быть?
Интересует есть ли общий способ вывода списка таблиц для pg и mysql?
Версия Postgres 8.2.5
Модуль python “postgresql”.



Отредактировано (Июнь 12, 2009 00:28:48)

Офлайн

#2 Июнь 12, 2009 10:12:03

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

список таблиц в postgres

Есть 2 варианта: через командную строку и через запрос.
1.
psql \dt

2.
SELECT *
FROM pg_tables
WHERE tablename !~'^pg'

или

SELECT pg_class.relname,pg_namespace.nspname
FROM pg_class INNER JOIN pg_namespace ON pg_class.relnamespace=pg_namespace.oid
WHERE pg_table_is_visible(pg_class.oid)



Офлайн

#3 Июнь 12, 2009 20:29:20

kvazar
От:
Зарегистрирован: 2009-01-05
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

список таблиц в postgres

благодарю.
я ещё вчера вот это нашёл -)

SELECT n.nspname as “Schema”,
c.relname as “Name”,
CASE c.relkind WHEN ‘r’ THEN ‘table’ WHEN ‘v’ THEN ‘view’ WHEN ‘i’ THEN ‘index
’ WHEN ‘S’ THEN ‘sequence’ WHEN ‘s’ THEN ‘special’ END as “Type”,
u.usename as “Owner”
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_user u ON u.usesysid = c.relowner
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
AND n.nspname NOT IN ('pg_catalog', ‘pg_toast’)
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;

поразмыслив решил данные о таблицах хранить в специальном файле. мне нужны только имена таблиц и имена полей.
Поэтому проблем с разными СУБД возникнуть не должно.
Хотя конечно решение далёкое от идеала, но есть некоторые плюсы.



Офлайн

#4 Июнь 13, 2009 14:14:23

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

список таблиц в postgres

kvazar, а покажите, зачем вам это понадобилось. Просто я всегда считал, что таблиц и прочие реляции должны быть постоянными, один раз заданными. Получение их списка нужно только в специфических программах для просмотра/настройки любой базы.



Офлайн

#5 Июнь 13, 2009 19:21:23

kvazar
От:
Зарегистрирован: 2009-01-05
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

список таблиц в postgres

ZZZ
kvazar, а покажите, зачем вам это понадобилось. Просто я всегда считал, что таблиц и прочие реляции должны быть постоянными, один раз заданными. Получение их списка нужно только в специфических программах для просмотра/настройки любой базы.
Ну собственно вы абсолютно правильно предположили для чего мне это надо.
Я пишу небольшую ЦМС для себя.
В панели управления есть раздел для работы с БД, где есть возможность создания, редактирования и наполнения таблиц.
Изначально я хотел пользоваться программами вроде phpPgAdmin, но это оказалось неудобно.
Все имена полей таблиц имеют формат названий. То есть например img_ file, contents_textarea.
Потом на основе этих имён строится форма для заполнения таблицы, следовательно форма будет выглядеть примерно так
<input type='file' name='img' />
<textarea name='contents'></textarea>
Специальный раздел для управления таблицами всё максимально упрощает.
Я сейчас таблицы создаю, редактирую в разы быстрее и проще, чем через pgMyAdmin.
Ну и предполагается работа и с MySql и с Postgres.



Офлайн

#6 Июнь 14, 2009 01:54:30

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

список таблиц в postgres

Ясно. Всё-таки рекомендую распотрашить pg_catalog, система будет более цельной.

kvazar
Я сейчас таблицы создаю, редактирую в разы быстрее и проще, чем через pgMyAdmin.
А я привык psql… :-) Никогда не использовал такие инструменты.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version