Browse Source

ecn-robots: started to obey 80 char line limit in pg robot

master
Nagy Károly Gábriel 15 years ago
parent
commit
72f3a5dc8b
1 changed files with 30 additions and 13 deletions
  1. +30
    -13
      pgdb.py

+ 30
- 13
pgdb.py

@ -8,7 +8,8 @@ class Db(object):
def __init__(self,name): def __init__(self,name):
self._name = name self._name = name
self.conn = psycopg2.connect("dbname='postgres' user='postgres' host='localhost' password=''");
self.conn = psycopg2.connect("dbname='postgres' user='postgres' host= \
'localhost' password=''");
self.conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT) self.conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)
self.cursor = self.conn.cursor() self.cursor = self.conn.cursor()
@ -31,7 +32,8 @@ class Db(object):
return out return out
def _get_owner(self): def _get_owner(self):
sql = "SELECT pg_get_userbyid(datdba) FROM pg_database WHERE datname ='"+self.sanitize(self._name)+"';"
sql = "SELECT pg_get_userbyid(datdba) FROM pg_database WHERE datname = \
'"+self.sanitize(self._name)+"';"
own = self._runsql(sql) own = self._runsql(sql)
return own return own
@ -44,16 +46,20 @@ class Db(object):
@property @property
def db_OID(self): def db_OID(self):
sql = "SELECT oid FROM pg_database WHERE datname = '"+self.sanitize(self._name)+"';"
sql = "SELECT oid FROM pg_database WHERE datname = '" \
+self.sanitize(self._name)+"';"
oid = self._runsql(sql) oid = self._runsql(sql)
return oid return oid
@property @property
def db_info(self): def db_info(self):
information = {'size':'', 'encoding':'', 'collation':'','ctype':''} information = {'size':'', 'encoding':'', 'collation':'','ctype':''}
information['size'] = self._runsql("SELECT pg_size_pretty(pg_database_size('"+self.sanitize(self._name)+"'));")
information['size'] = self._runsql("SELECT pg_size_pretty( \
pg_database_size('"+self.sanitize(
self._name)+"'));")
inf = self._runsql("""SELECT pg_encoding_to_char(encoding), inf = self._runsql("""SELECT pg_encoding_to_char(encoding),
datcollate, datctype FROM pg_database WHERE datname='"""+self._name+"';")
datcollate, datctype FROM pg_database WHERE datname='"""
+self._name+"';")
information['encoding'] = inf[0][0] information['encoding'] = inf[0][0]
information['collation'] = inf[0][1] information['collation'] = inf[0][1]
information['ctype'] = inf[0][2] information['ctype'] = inf[0][2]
@ -61,19 +67,22 @@ class Db(object):
@property @property
def db_connections(self): def db_connections(self):
sql = "SELECT numbackends from pg_stat_database WHERE datname = '"+self.sanitize(self._name)+"';"
sql = "SELECT numbackends from pg_stat_database WHERE datname = \
'"+self.sanitize(self._name)+"';"
cncs = self._runsql(sql) cncs = self._runsql(sql)
return cncs return cncs
def user_exists(self, user): def user_exists(self, user):
sql = "SELECT rolname FROM pg_authid WHERE rolname = '"+self.sanitize(user)+"';"
sql = "SELECT rolname FROM pg_authid WHERE rolname = \
'"+self.sanitize(user)+"';"
u = self._runsql(sql) u = self._runsql(sql)
if (len(u) == 0): if (len(u) == 0):
return False return False
return True return True
def db_exists(self, xdb): def db_exists(self, xdb):
sql = "SELECT datname FROM pg_database WHERE datname = '"+self.sanitize(xdb)+"';"
sql = "SELECT datname FROM pg_database WHERE datname = \
'"+self.sanitize(xdb)+"';"
d = self._runsql(sql) d = self._runsql(sql)
if (len(d) == 0): if (len(d) == 0):
return False return False
@ -88,13 +97,17 @@ class Db(object):
def db_create(self, own, coll, ctyp, enc=u'UTF8'): def db_create(self, own, coll, ctyp, enc=u'UTF8'):
if self.db_exists(self._name) == False: if self.db_exists(self._name) == False:
sql = "CREATE DATABASE "+self.sanitize(self._name)+" WITH OWNER = "+self.sanitize(own)+" ENCODING = '"+self.sanitize(enc)+"' LC_COLLATE = '"+self.sanitize(coll)+"' LC_CTYPE = '"+self.sanitize(ctyp)+"';"
sql = "CREATE DATABASE "+self.sanitize(self._name)+" WITH OWNER = "\
+self.sanitize(own)+" ENCODING = '"+self.sanitize(enc) \
+"' LC_COLLATE = '"+self.sanitize(coll)+"' LC_CTYPE = \
'"+self.sanitize(ctyp)+"';"
create = self._runsql(sql) create = self._runsql(sql)
return create return create
return "Failed" return "Failed"
def db_dump(self, path, method): def db_dump(self, path, method):
dump = Popen(['/usr/bin/pg_dump', '-U','postgres','-F'+ method, self._name], stdout=PIPE)
dump = Popen(['/usr/bin/pg_dump', '-U','postgres','-F'+
method, self._name], stdout=PIPE)
fl = open(path,"wb") fl = open(path,"wb")
gz = Popen(['gzip'], stdin = dump.stdout, stdout = fl) gz = Popen(['gzip'], stdin = dump.stdout, stdout = fl)
fl.close fl.close
@ -104,7 +117,8 @@ class Db(object):
def db_rename(self,old, new): def db_rename(self,old, new):
if self.db_exists(new) == True or self.db_exists(old) == False: if self.db_exists(new) == True or self.db_exists(old) == False:
return "Cannot" return "Cannot"
sql = "ALTER DATABASE "+self.sanitize(old)+" RENAME TO "+self.sanitize(new)+";"
sql = "ALTER DATABASE "+self.sanitize(old)+" RENAME TO " \
+self.sanitize(new)+";"
rename = self._runsql(sql) rename = self._runsql(sql)
return rename return rename
@ -112,7 +126,8 @@ class Db(object):
pass pass
def db_list(self): def db_list(self):
sql = "SELECT datname FROM pg_database WHERE datname NOT IN ('template0', 'template1', 'postgres');"
sql = "SELECT datname FROM pg_database WHERE datname NOT IN ('template0' \
, 'template1', 'postgres');"
dbl = self._runsql(sql) dbl = self._runsql(sql)
return dbl return dbl
@ -122,7 +137,9 @@ class Db(object):
return usrl return usrl
def usr_add(self, us, passw): def usr_add(self, us, passw):
sql = "CREATE ROLE "+self.sanitize(us)+" WITH NOSUPERUSER NOCREATEDB NOCREATEROLE NOCREATEUSER LOGIN PASSWORD '"+self.sanitize(passw)+"';"
sql = "CREATE ROLE "+self.sanitize(us)+" WITH NOSUPERUSER NOCREATEDB \
NOCREATEROLE NOCREATEUSER LOGIN PASSWORD '" \
+self.sanitize(passw)+"';"
usra = self._runsql(sql) usra = self._runsql(sql)
return usra return usra

Loading…
Cancel
Save