script.py.mako 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <%!
  2. import re
  3. %>"""${message}
  4. Revision ID: ${up_revision}
  5. Revises: ${down_revision | comma,n}
  6. Create Date: ${create_date}
  7. """
  8. from typing import Sequence, Union
  9. from alembic import op
  10. import sqlalchemy as sa
  11. ${imports if imports else ""}
  12. # revision identifiers, used by Alembic.
  13. revision: str = ${repr(up_revision)}
  14. down_revision: Union[str, None] = ${repr(down_revision)}
  15. branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)}
  16. depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)}
  17. def upgrade(engine_name: str) -> None:
  18. """Upgrade schema."""
  19. globals()["upgrade_%s" % engine_name]()
  20. def downgrade(engine_name: str) -> None:
  21. """Downgrade schema."""
  22. globals()["downgrade_%s" % engine_name]()
  23. <%
  24. db_names = config.get_main_option("databases")
  25. %>
  26. ## generate an "upgrade_<xyz>() / downgrade_<xyz>()" function
  27. ## for each database name in the ini file.
  28. % for db_name in re.split(r',\s*', db_names):
  29. def upgrade_${db_name}() -> None:
  30. """Upgrade ${db_name} schema."""
  31. ${context.get("%s_upgrades" % db_name, "pass")}
  32. def downgrade_${db_name}() -> None:
  33. """Downgrade ${db_name} schema."""
  34. ${context.get("%s_downgrades" % db_name, "pass")}
  35. % endfor