The command center for the models being generated
for Saffier.
PARAMETER |
DESCRIPTION |
database |
TYPE:
Database
|
**kwargs |
TYPE:
Any
DEFAULT:
{}
|
Source code in saffier/core/connection/registry.py
22
23
24
25
26
27
28
29
30
31
32
33
34
35 | def __init__(self, database: Database, **kwargs: Any) -> None:
self.database: Database = database
self.models: Dict[str, Any] = {}
self.reflected: Dict[str, Any] = {}
self.db_schema = kwargs.get("schema", None)
self.extra: Mapping[str, Type["Database"]] = kwargs.pop("extra", {})
self.schema = Schema(registry=self)
self._metadata = (
sqlalchemy.MetaData(schema=self.db_schema)
if self.db_schema is not None
else sqlalchemy.MetaData()
)
|
database
instance-attribute
models
instance-attribute
reflected
instance-attribute
db_schema
instance-attribute
db_schema = get('schema', None)
schema
instance-attribute
schema = Schema(registry=self)
_metadata = MetaData(schema=db_schema) if db_schema is not None else MetaData()
_get_engine
cached
property
declarative_base
cached
property
_get_sync_engine
cached
property
_get_database_url
Source code in saffier/core/connection/registry.py
47
48
49
50
51
52
53
54
55
56
57
58
59
60 | def _get_database_url(self) -> str:
url = self.database.url
if not url.driver:
if url.dialect in settings.postgres_dialects:
url = url.replace(driver="asyncpg")
elif url.dialect in settings.mysql_dialects:
url = url.replace(driver="aiomysql")
elif url.dialect in settings.sqlite_dialects:
url = url.replace(driver="aiosqlite")
elif url.dialect in settings.mssql_dialects:
raise ImproperlyConfigured("Saffier does not support MSSQL at the moment.")
elif url.driver in settings.mssql_drivers: # type: ignore
raise ImproperlyConfigured("Saffier does not support MSSQL at the moment.")
return str(url)
|
create_all
async
Source code in saffier/core/connection/registry.py
| async def create_all(self) -> None:
if self.db_schema:
await self.schema.create_schema(self.db_schema, True)
async with self.database:
async with self.engine.begin() as connection:
await connection.run_sync(self.metadata.create_all)
await self.engine.dispose()
|
drop_all
async
Source code in saffier/core/connection/registry.py
98
99
100
101
102
103
104 | async def drop_all(self) -> None:
if self.db_schema:
await self.schema.drop_schema(self.db_schema, True, True)
async with self.database:
async with self.engine.begin() as conn:
await conn.run_sync(self.metadata.drop_all)
await self.engine.dispose()
|