class GeniTable:
- GENI_TABLE_PREFIX = "sfa"
+ GENI_TABLE_PREFIX = "sfa$"
- def __init__(self, create=False, cninfo=None):
+ def __init__(self, create=False, hrn="unspecified.default.registry", cninfo=None):
- self.tablename = GeniTable.GENI_TABLE_PREFIX
+ self.hrn = hrn
+
+ # pgsql doesn't like table names with "." in them, to replace it with "$"
+ self.tablename = GeniTable.GENI_TABLE_PREFIX + self.hrn.replace(".", "$")
# establish a connection to the pgsql server
self.cnx = DB(cninfo['dbname'], cninfo['address'], port=cninfo['port'], user=cninfo['user'], passwd=cninfo['password'])
return False
def create(self):
- seln't like table names with "." in them, to
-
- # pgsql doesn't like table names with "." in them, to.hrn = hrn
querystr = "CREATE TABLE " + self.tablename + " ( \
key text, \
- authority text, \
hrn text, \
gid text, \
type text, \
last_updated timestamp without time zone NOT NULL DEFAULT CURRENT_TIMESTAMP);"
template = "CREATE INDEX %s_%s_idx ON %s (%s);"
indexes = [template % ( self.tablename, field, self.tablename, field) \
- for field in ['key', 'authority', 'hrn', 'type','pointer']]
+ for field in ['key', 'hrn', 'type','pointer']]
# IF EXISTS doenst exist in postgres < 8.2
try:
self.cnx.query('DROP TABLE IF EXISTS ' + self.tablename)
def update(self, record):
dont_update = ['date_created', 'last_updated']
- names = record.get_field_names()
- names = [name for name in names if name not in dont_update]
+ fields = [field for field in record.fields.keys() if field not in dont_update]
+ fieldvals = record.get_field_value_strings(fields)
pairs = []
- for name in names:
- val = record.get_field_value_string(name)
- pairs.append(name + " = " + val)
+ for field in fields:
+ val = record.get_field_value_string(field)
+ pairs.append(field + " = " + val)
update = ", ".join(pairs)
query_str = "UPDATE " + self.tablename+ " SET " + update + " WHERE key = '" + record.get_key() + "'"
result_rec_list.append(GeniRecord(dict=dict).as_dict())
return result_rec_list
+ def drop(self):
+ try:
+ self.cnx.query('DROP TABLE IF EXISTS ' + self.tablename)
+ except ProgrammingError:
+ try:
+ self.cnx.query('DROP TABLE ' + self.tablename)
+ except ProgrammingError:
+ pass
+
@staticmethod
def geni_records_purge(cninfo):