@@ -91,6 +91,8 @@ class _QueryProperty:
9191
9292 This wrapper makes sure that each model gets a Query object with a
9393 correct session corresponding to its thread.
94+
95+
9496 """
9597 def __init__ (self , db ):
9698 self .db = db
@@ -107,8 +109,15 @@ def __get__(self, instance, owner):
107109
108110
109111class Model (object ):
112+ """
113+ Standard SQL alchemy model
114+
115+ This model is thread safe
116+ """
110117 table_name = None
111118 session = None
119+
120+ # Needed for query property
112121 query_class = None
113122 _query = None
114123
@@ -306,10 +315,14 @@ def initialize_sqlite3(self):
306315 os .mknod (database_path )
307316
308317 database_url = self .config .get (DATABASE_URL )
309- self .engine = create_engine ('sqlite:////{}' . format ( database_url ) )
318+ self .engine = create_engine (database_url )
310319
311320
312321class DatabaseResolver (SQLAlchemyDatabaseResolverInterface ):
322+ """
323+ Adapter of the SQLAlchemyDatabaseResolver, for the context config or
324+ standard config object.
325+ """
313326
314327 def __init__ (
315328 self , query_class = Query , model_class = Model , context : Context = None
@@ -388,92 +401,3 @@ def model(self):
388401
389402 def initialize_tables (self ) -> None :
390403 self .resolver .initialize_tables ()
391-
392- # class DatabaseResolver:
393- # """
394- # Class DatabaseResolver: resolves a database connection with the use
395- # of SQLAlchemy.
396- #
397- # The DatabaseResolver implements session management across threads
398- # to resolve conflicts.
399- # """
400- #
401- # def __init__(
402- # self,
403- # query_class=Query,
404- # model_class=Model,
405- # base_dir: str = None,
406- # ) -> None:
407- #
408- # self.
409- # self._model = self.make_declarative_base(model_class)
410-
411- # self.engine = None
412- # self.session_factory = None
413- # self.Session = None
414- # self.database_path = None
415- #
416- # def configure(self):
417- # self.initialize()
418- #
419- # self.session_factory = sessionmaker(bind=self.engine)
420- # self.Session = scoped_session(self.session_factory)
421- #
422- # if self._model is None:
423- # raise DatabaseOperationalException("Model is not defined")
424- #
425- # self._model.session = _SessionProperty(self)
426- #
427- # if not getattr(self._model, 'query_class', None):
428- # self._model.query_class = self.Query
429- #
430- # self._model.query = _QueryProperty(self)
431- #
432- # def initialize(self):
433- #
434- # if not self.config.configured:
435- # raise DatabaseOperationalException(
436- # "Context config is not configured"
437- # )
438- #
439- # database_name = self.config.get(DATA_BASE_NAME)
440- #
441- # if database_name is not None:
442- # self.database_path = os.path.join(
443- # self.config.get(BASE_DIR), database_name, '.sqlite3'
444- # )
445- # else:
446- # self.database_path = os.path.join(
447- # self.config.get(BASE_DIR), 'db.sqlite3'
448- # )
449- #
450- # # Only create the database if not exist
451- # if not os.path.isfile(self.database_path):
452- # os.mknod(self.database_path)
453- #
454- # self.engine = create_engine('sqlite:////{}'.format(self.database_path))
455- #
456- # @staticmethod
457- # def make_declarative_base(model_class):
458- # """
459- # Creates the declarative base that all models will inherit from.
460- # """
461- #
462- # model = declarative_base(cls=model_class)
463- # return model
464- #
465- # @property
466- # def session(self) -> Session:
467- # """
468- # Returns scoped session of an Session object
469- # """
470- # return self.Session()
471- #
472- # @property
473- # def model(self) -> Model:
474- # return self._model
475- #
476- # def initialize_tables(self):
477- # self._model.metadata.create_all(self.engine)
478-
479-
0 commit comments