aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/python/pgext.py
blob: f1a7cfa606218be32f9065735e68d7f28d0db9b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from pg import *

# This library file contains some common functions not directly provided by the
# PostGres C library. It offers too a keyword interface for pgmodule connect
# function.

# encapsulate pg connect function for keywords enabling
def doconnect(dbname = None, host = None, port = None, opt = None, tty = None):
	return connect(dbname, host, port, opt, tty)

# list all databases on the server 
def ListDB(pgcnx):
	list = []
	for node in pgcnx.query("SELECT datname FROM pg_database").getresult():
		list.append(node[0])
	return list

# list all tables (classes) in the selected database
def ListTables(pgcnx):
	list = []
	for node in pgcnx.query("""SELECT relname FROM pg_class
				WHERE relkind = 'r' AND
					relname !~ '^Inv' AND
					relname !~ '^pg_'""").getresult():
		list.append(node[0])
	return list

# list table fields (attribute) in given table
def ListAllFields(pgcnx, table):
	list = []
	for node in pgcnx.query("""SELECT c.relname, a.attname, t.typname
							FROM pg_class c, pg_attribute a, pg_type t
							WHERE c.relname = '%s' AND
								a.attnum > 0 AND
								a.attrelid = c.oid AND
								a.atttypid = t.oid
							ORDER BY relname, attname""" % table).getresult():
		list.append(node[1], node[2])
	return list