[docs]defregister_tortoise(app:Quart,config:Optional[dict]=None,config_file:Optional[str]=None,db_url:Optional[str]=None,modules:Optional[Dict[str,Iterable[Union[str,ModuleType]]]]=None,generate_schemas:bool=False,)->None:""" Registers ``before_serving`` and ``after_serving`` hooks to set-up and tear-down Tortoise-ORM inside a Quart service. It also registers a CLI command ``generate_schemas`` that will generate the schemas. You can configure using only one of ``config``, ``config_file`` and ``(db_url, modules)``. Parameters ---------- app: Quart app. config: Dict containing config: Example ------- .. code-block:: python3 { 'connections': { # Dict format for connection 'default': { 'engine': 'tortoise.backends.asyncpg', 'credentials': { 'host': 'localhost', 'port': '5432', 'user': 'tortoise', 'password': 'qwerty123', 'database': 'test', } }, # Using a DB_URL string 'default': 'postgres://postgres:qwerty123@localhost:5432/events' }, 'apps': { 'models': { 'models': ['__main__'], # If no default_connection specified, defaults to 'default' 'default_connection': 'default', } } } config_file: Path to .json or .yml (if PyYAML installed) file containing config with same format as above. db_url: Use a DB_URL string. See :ref:`db_url` modules: Dictionary of ``key``: [``list_of_modules``] that defined "apps" and modules that should be discovered for models. generate_schemas: True to generate schema immediately. Only useful for dev environments or SQLite ``:memory:`` databases Raises ------ ConfigurationError For any configuration error """_generate_schemas=generate_schemas@app.before_servingasyncdefinit_orm()->None:# pylint: disable=W0612awaitTortoise.init(config=config,config_file=config_file,db_url=db_url,modules=modules)logger.info("Tortoise-ORM started, %s, %s",connections._get_storage(),Tortoise.apps)if_generate_schemas:logger.info("Tortoise-ORM generating schema")awaitTortoise.generate_schemas()@app.after_servingasyncdefclose_orm()->None:# pylint: disable=W0612awaitconnections.close_all()logger.info("Tortoise-ORM shutdown")@app.cli.command()# type: ignoredefgenerate_schemas()->None:# pylint: disable=E0102"""Populate DB with Tortoise-ORM schemas."""asyncdefinner()->None:awaitTortoise.init(config=config,config_file=config_file,db_url=db_url,modules=modules)awaitTortoise.generate_schemas()awaitconnections.close_all()logger.setLevel(logging.DEBUG)loop=asyncio.get_event_loop()loop.run_until_complete(inner())