Проверка, существует ли postgresql таблица в соответствии с Python (и вероятно Psycopg2)

Моя любимая команда "ls - Тор",

Она вызывает питание богов для списка последний раз измененных файлов в удобно читаемом формате.

46
задан Brad Koch 11 May 2013 в 16:10
поделиться

3 ответа

Как насчет:

>>> import psycopg2
>>> conn = psycopg2.connect("dbname='mydb' user='username' host='localhost' password='foobar'")
>>> cur = conn.cursor()
>>> cur.execute("select * from information_schema.tables where table_name=%s", ('mytable',))
>>> bool(cur.rowcount)
True

Альтернатива с использованием EXISTS лучше в том смысле, что не требует извлечения всех строк, а просто наличие хотя бы одной такой строки:

>>> cur.execute("select exists(select * from information_schema.tables where table_name=%s)", ('mytable',))
>>> cur.fetchone()[0]
True
71
ответ дан 26 November 2019 в 20:21
поделиться

Я не знаю конкретно библиотеки psycopg2, но следующий запрос можно использовать для проверки существования таблицы:

SELECT EXISTS(SELECT 1 FROM information_schema.tables 
              WHERE table_catalog='DB_NAME' AND 
                    table_schema='public' AND 
                    table_name='TABLE_NAME');

Преимущество использования information_schema перед выбором непосредственно из pg_ * таблицы - это некоторая степень переносимости запроса.

20
ответ дан 26 November 2019 в 20:21
поделиться
select exists(select relname from pg_class 
where relname = 'mytablename' and relkind='r');
3
ответ дан 26 November 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: