How can I determine if a table exists using the Psycopg2 Python library? I want a true or false boolean.
>>> 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
An alternative using EXISTS is better in that it doesn't require that all rows be retrieved, but merely that at least one such row exists:
>>> cur.execute("select exists(select * from information_schema.tables where table_name=%s)", ('mytable',)) >>> cur.fetchone() True
I don't know the psycopg2 lib specifically, but the following query can be used to check for existence of a table:
SELECT EXISTS(SELECT 1 FROM information_schema.tables WHERE table_catalog='DB_NAME' AND table_schema='public' AND table_name='TABLE_NAME');
The advantage of using information_schema over selecting directly from the pg_* tables is some degree of portability of the query.