Describe the bug
I've made a small snippet to generate create_table ops for my models
def create_orm_migration(metadata):
operations = []
for table in metadata.tables.values():
if table.name.startswith('meeting_note'):
operations.append(
ops.CreateTableOp.from_table(table)
)
for idx in table.indexes:
operations.append(ops.CreateIndexOp.from_index(idx))
print(autogenerate.render_python_code(
ops.UpgradeOps(ops=operations),
),
)
and it raises KeyError because UUID is defined in other modules.
from portal.utils.db import UUID
Base = declarative_base()
class MeetingNotes(Base, CommonFieldsMixin):
__tablename__ = 'meeting_note_notes'
id = Column(UUID, primary_key=True, default=uuid.uuid1)
date = Column(Date)
duration = Column(Integer)
category = Column(String(1024))
type = Column(String())
host_employee_number = Column(Integer)
content = Column(Text(100000))
title = Column(String(1024))
agenda = Column(Text())
Expected behavior
It should add module path automatically without raise KeyError
To Reproduce
Please try to provide a Minimal, Complete, and Verifiable example, with the migration script and/or the SQLAlchemy tables or models involved.
See also Reporting Bugs on the website.
def test_render_create_table_with_user_module_type(self):
class MyType(UserDefinedType):
def get_col_spec(self):
return "MYTYPE"
type_ = MyType()
uo = ops.UpgradeOps(
ops=[
ops.CreateTableOp(
"sometable", [Column("x", type_)]
)
]
)
eq_(
autogenerate.render_python_code(uo),
"# ### commands auto generated by Alembic - please adjust! ###\n"
" op.create_table('sometable',\n"
" sa.Column('x', tests.test_autogen_render.MyType(), nullable=True)\n"
" )\n"
" # ### end Alembic commands ###",
)
Error
Traceback (most recent call last): File "/home/tangkikodo/.pyenv-wsl/versions/3.7.8/lib/python3.7/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec)
File "/home/tangkikodo/.pyenv-wsl/versions/3.7.8/lib/python3.7/runpy.py", line 85, in _run_code exec(code, run_globals)
File "/home/tangkikodo/portal/portal/service/meeting_notes/models.py", line 51, in <module> create_orm_migration(Base.metadata)
File "/home/tangkikodo/portal/portal/toolbox/ale_gen.py", line 20, in create_orm_migration ops.UpgradeOps(ops=operations), File "/home/tangkikodo/portal/venv/lib/python3.7/site-packages/alembic/autogenerate/api.py", line 203, in render_python_code render._render_cmd_body(up_or_down_op, autogen_context)
File "/home/tangkikodo/portal/venv/lib/python3.7/site-packages/alembic/autogenerate/render.py", line 107, in _render_cmd_body lines = render_op(autogen_context, op)
File "/home/tangkikodo/portal/venv/lib/python3.7/site-packages/alembic/autogenerate/render.py", line 125, in render_op lines = util.to_list(renderer(autogen_context, op))
File "/home/tangkikodo/portal/venv/lib/python3.7/site-packages/alembic/autogenerate/render.py", line 219, in _add_table _render_column(col, autogen_context) for col in table.columns
File "/home/tangkikodo/portal/venv/lib/python3.7/site-packages/alembic/autogenerate/render.py", line 219, in <listcomp> _render_column(col, autogen_context) for col in table.columns
File "/home/tangkikodo/portal/venv/lib/python3.7/site-packages/alembic/autogenerate/render.py", line 708, in _render_column "type": _repr_type(column.type, autogen_context),
File "/home/tangkikodo/portal/venv/lib/python3.7/site-packages/alembic/autogenerate/render.py", line 838, in _repr_type prefix = _user_autogenerate_prefix(autogen_context, type_)
File "/home/tangkikodo/portal/venv/lib/python3.7/site-packages/alembic/autogenerate/render.py", line 637, in _user_autogenerate_prefix prefix = autogen_context.opts["user_module_prefix"] KeyError: 'user_module_prefix'
Versions.
- OS:
- Python:
- Alembic:
- SQLAlchemy:
- Database:
- DBAPI:
Additional context
Have a nice day!
Describe the bug
I've made a small snippet to generate create_table ops for my models
and it raises KeyError because UUID is defined in other modules.
from portal.utils.db import UUID
Expected behavior
It should add module path automatically without raise KeyError
To Reproduce
Please try to provide a Minimal, Complete, and Verifiable example, with the migration script and/or the SQLAlchemy tables or models involved.
See also Reporting Bugs on the website.
Error
Versions.
Additional context
Have a nice day!