def __init__(self, memory=False, filename=None, drop=False):
        """Setup a sqlalchemy connection to spatialite with the proper
        metadata.

        :param memory: if True the catalogue will use an in-memory
        database, otherwise a file-based database is used

        :param filename: the filename of the database used. Unused if
        `memory` is True

        :param drop: if True, drop the catalogue and rebuild the
        schema
        """

        if memory:
            self._engine = sqlalchemy.create_engine('sqlite://', module=sqlite)
        else:
            filename = filename or self.DEFAULT_FILENAME
            self._engine = sqlalchemy.create_engine(
                'sqlite:///%s' % filename,
                module=sqlite,
                poolclass=sqlalchemy.pool.QueuePool,
                pool_size=1,
                )
        sqlevent.listen(self._engine,
                        "first_connect",
                        _connect)
        self.session = orm.sessionmaker(bind=self._engine)()
        self._metadata = sqlalchemy.MetaData(self._engine)
        self._create_schema()
        if drop:
            self._metadata.drop_all()
        self._metadata.create_all(self._engine)
    def __init__(self, memory=False, filename=None):
        """Setup a sqlalchemy connection to spatialite with the proper
        metadata.

        :param memory: if True the catalogue will use an in-memory
        database, otherwise a file-based database is used

        :param filename: the filename of the database used. Unused if
        `memory` is True
        """

        to_be_initialized = False
        if memory:
            self._engine = sqlalchemy.create_engine('sqlite://', module=sqlite)
            to_be_initialized = True
        else:
            filename = filename or self.DEFAULT_FILENAME
            if not os.path.exists(filename):
                to_be_initialized = True
            self._engine = sqlalchemy.create_engine(
                'sqlite:///%s' % filename,
                module=sqlite,
                poolclass=sqlalchemy.pool.QueuePool,
                pool_size=1,
                )
        sqlevent.listen(self._engine,
                        "first_connect",
                        _connect)
        self.session = orm.sessionmaker(bind=self._engine)()
        self._metadata = sqlalchemy.MetaData(self._engine)
        self._create_schema()
        if to_be_initialized:
            self.recreate()
Beispiel #3
0
    def __init__(self, memory=False, filename=None, drop=False):
        """Setup a sqlalchemy connection to spatialite with the proper
        metadata.

        :param memory: if True the catalogue will use an in-memory
        database, otherwise a file-based database is used

        :param filename: the filename of the database used. Unused if
        `memory` is True

        :param drop: drop the content of the database
        """

        self.to_be_initialized = drop
        if memory:
            # set echo=True in debugging
            self._engine = sqlalchemy.create_engine('sqlite://', module=sqlite)
            self.to_be_initialized = True
        else:
            filename = filename or self.DEFAULT_FILENAME
            if not os.path.exists(filename):
                self.to_be_initialized = True
            self._engine = sqlalchemy.create_engine(
                'sqlite:///%s' % filename,
                module=sqlite,
                poolclass=sqlalchemy.pool.QueuePool,
                pool_size=1)
        self.session = None
        self._metadata = None
        sqlevent.listen(self._engine, "first_connect", self._connect)
        self._engine.connect()
        orm.clear_mappers()
        self._create_schema_magnitudemeasure()

        if self.to_be_initialized:
            self.recreate()
Beispiel #4
0
 def __declare_last__(cls):
     event.listen(cls, 'before_delete', cls.before_delete)
Beispiel #5
0
 def __declare_last__(cls):
     event.listen(cls, 'before_update', cls.before_update, raw=True)
Beispiel #6
0
 def __declare_last__(cls):
     event.listen(cls, 'before_update', cls.on_update)