-
Notifications
You must be signed in to change notification settings - Fork 86
Open
Description
Is there a way to create migrations automatically based on model changes ? For instance I have some models in ./app/models.py
and I would like to run:
pw-migrate create --auto-source app.models --database sqlite:///config/app.db add_permissions_table
in order to automatically get a migration named add_permissions_table
which will contain all code to create all missing tables.
Instead of getting that I'm getting an empty migration with this:
def migrate(migrator: Migrator, database: pw.Database, *, fake=False):
"""Write your migrations here."""
def rollback(migrator: Migrator, database: pw.Database, *, fake=False):
"""Write your rollback migrations here."""
Is this library supporting automatic migrations ?
BTW when I run the command with --auto
option instead of --auto-source
I get the following error:
Traceback (most recent call last):
File "/usr/local/bin/pw-migrate", line 8, in <module>
sys.exit(cli())
File "/usr/local/lib/python3.9/dist-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.9/dist-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python3.9/dist-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.9/dist-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "/usr/local/lib/python3.9/dist-packages/peewee_migrate/cli.py", line 135, in create
router.create(name or "auto", auto=auto_source if auto and auto_source else auto)
File "/usr/local/lib/python3.9/dist-packages/peewee_migrate/router.py", line 113, in create
models = [m for module in modules for m in load_models(module)]
File "/usr/local/lib/python3.9/dist-packages/peewee_migrate/router.py", line 113, in <listcomp>
models = [m for module in modules for m in load_models(module)]
File "/usr/local/lib/python3.9/dist-packages/peewee_migrate/router.py", line 327, in load_models
modules = [module] if isinstance(module, ModuleType) else _import_submodules(module)
File "/usr/local/lib/python3.9/dist-packages/peewee_migrate/router.py", line 359, in _import_submodules
modules += _import_submodules(module)
File "/usr/local/lib/python3.9/dist-packages/peewee_migrate/router.py", line 356, in _import_submodules
module = spec.loader.load_module(name)
File "<frozen importlib._bootstrap_external>", line 469, in _check_name_wrapper
File "<frozen importlib._bootstrap_external>", line 969, in load_module
File "<frozen importlib._bootstrap_external>", line 794, in load_module
File "<frozen importlib._bootstrap>", line 271, in _load_module_shim
File "<frozen importlib._bootstrap>", line 613, in _exec
File "<frozen importlib._bootstrap_external>", line 790, in exec_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "/workspace/frigate/frigate/detectors/detector_types.py", line 40, in <module>
Union[tuple(BaseDetectorConfig.__subclasses__())],
File "/usr/lib/python3.9/typing.py", line 268, in inner
return func(*args, **kwds)
File "/usr/lib/python3.9/typing.py", line 345, in __getitem__
return self._getitem(self, parameters)
File "/usr/lib/python3.9/typing.py", line 452, in Union
raise TypeError("Cannot take a Union of no types.")
TypeError: Cannot take a Union of no types.
Thanks.
Metadata
Metadata
Assignees
Labels
No labels