我正在使用django-sorcery库,并且一直在尝试进行一些迁移:
django-admin sorcery revision -m "Second revision" --autogenerate -v 1 my_app
当我第一次运行命令时,我看到一条错误消息:
FileNotFoundError: [Errno 2] No such file or directory: [... snip ...]python3.7/site-packages/django_sorcery/db/alembic/script.py.mako
不确定为什么pip包中缺少该模板,我手动将其重新添加。
现在,即使我指定了--autogenerate标志,该命令也只会生成空的迁移文件。
我应该在某个地方扔一个env.py文件吗?这个命令实际上应该起作用吗?帮助表示赞赏。
答案 0 :(得分:2)
丢失的模板实际上是在最近的发行版中解决的,因此建议您尝试一下。
关于未使用的模型,可能有一些有用的想法
db.Model
的子类:from django_sorcery.db import databases
db = databases.get("default")
class MyModel(db.Model):
...
模型需要在INSTALLED_APPS
之一中定义。内部魔术师使用get_containing_app_config
获取模型的相应django应用程序,因为sqlalchemy模型不是本地在django应用程序中注册的。
默认情况下不需要其他,因此不需要传统的env.py
。应用AppConfig
中允许一些基本的自定义:
version_table
-默认为alembic_version_{app.label}
version_table_schema
如果还不够的话,可以使用几个signals来挂钩创建自定义的Alembic配置
应该可以使迁移命令起作用。回购随附test_site
,其中包含一个规范的polls
应用进行测试。您可以尝试使用它和Alembic迁移:
$ cd test_site
$ ./manage.py sorcery revision -m 'initial migration' -r 0001 --autogenerate polls
$ cat polls/migrations/0001_initial_migration.py
...
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table('question',
sa.Column('pk', sa.Integer(), autoincrement=True, nullable=False),
sa.Column('question_text', sa.String(length=200), nullable=True),
sa.Column('pub_date', sa.DateTime(), nullable=True),
sa.PrimaryKeyConstraint('pk')
)
op.create_table('choice',
sa.Column('pk', sa.Integer(), autoincrement=True, nullable=False),
sa.Column('choice_text', sa.String(length=200), nullable=True),
sa.Column('votes', sa.Integer(), nullable=True),
sa.Column('question_pk', sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(['question_pk'], ['question.pk'], ),
sa.PrimaryKeyConstraint('pk')
)
# ### end Alembic commands ###
...
免责声明:我是django-sorcery的维护者之一。感谢您的尝试!如果您遇到任何错误,请随时打开问题。我们正在构建功能时,很多东西还没有得到很好的记录,但是随着时间的推移,希望文档和稳定性会有所改善。