def _create(self): """Create the database from the base SQL.""" from ambry.orm import Dataset, Partition, Table, Column, File, Code, ColumnStat from ..identity import Identity # from sqlalchemy.orm import sessionmaker tables = [Dataset, Partition, Table, Column, File, Code, ColumnStat] for table in tables: table.__table__.create(bind=self.engine) # Create the Dataset record session = self.session idd = dict(self.bundle.metadata.identity) ds = Dataset(**idd) ident = Identity.from_dict(idd) ds.name = ident.sname ds.vname = ident.vname ds.fqname = ident.fqname ds.cache_key = ident.cache_key try: ds.creator = self.bundle.config.about.author except: ds.creator = 'n/a' session.add(ds) session.commit()
def install_dataset_identity(self, identity, data={}, overwrite=True): """Create the record for the dataset. Does not add an File objects """ from sqlalchemy.exc import IntegrityError from ..dbexceptions import ConflictError ds = Dataset(**identity.dict) ds.name = identity.sname ds.vname = identity.vname ds.fqname = identity.fqname ds.cache_key = identity.cache_key ds.creator = 'N/A' ds.data = data try: self.session.merge(ds) self.commit() except IntegrityError as e: self.session.rollback() if not overwrite: return try: self.session.merge(ds) self.commit() except IntegrityError as e: msg = "Can't install dataset vid={}; \nOne already exists. ('{}');\n {}" .format( identity.vid, e.message, ds.dict) raise ConflictError(msg)
def _create(self): """Create the database from the base SQL.""" from ambry.orm import Dataset, Partition, Table, Column, File, Code, ColumnStat from ..identity import Identity from sqlalchemy.orm import sessionmaker tables = [Dataset, Partition, Table, Column, File, Code, ColumnStat] for table in tables: table.__table__.create(bind=self.engine) # Create the Dataset record session = self.session idd = dict(self.bundle.metadata.identity) ds = Dataset(**idd) ident = Identity.from_dict(idd) ds.name = ident.sname ds.vname = ident.vname ds.fqname = ident.fqname ds.cache_key = ident.cache_key try: ds.creator = self.bundle.config.about.author except: ds.creator = 'n/a' session.add(ds) session.commit()
def install_dataset_identity(self, identity, data={}, overwrite=True): """Create the record for the dataset. Does not add an File objects """ from sqlalchemy.exc import IntegrityError from ..dbexceptions import ConflictError ds = Dataset(**identity.dict) ds.name = identity.sname ds.vname = identity.vname ds.fqname = identity.fqname ds.cache_key = identity.cache_key ds.creator = 'N/A' ds.data = data try: self.session.merge(ds) self.commit() except IntegrityError as e: self.session.rollback() if not overwrite: return try: self.session.merge(ds) self.commit() except IntegrityError as e: raise ConflictError( "Can't install dataset vid={}; \nOne already exists. ('{}');\n {}" .format( identity.vid, e.message, ds.dict))
def install_dataset_identity(self, identity, location=Dataset.LOCATION.LIBRARY, data = {}): '''Create the record for the dataset. Does not add an File objects''' from sqlalchemy.exc import IntegrityError from ..dbexceptions import ConflictError ds = Dataset(**identity.dict) ds.name = identity.sname ds.vname = identity.vname ds.fqname = identity.fqname ds.cache_key = identity.cache_key ds.creator = 'N/A' ds.location = location ds.data = data try: try: self.session.add(ds) self.commit() except: self.session.rollback() self.session.merge(ds) self.commit() except IntegrityError as e: raise ConflictError("Can't install dataset vid={} vname={} cache_key={}; \nOne already exists. ('{}')" .format(identity.vid, identity.vname, identity.cache_key, e.message))