weixin_39890652 2020-11-30 11:37
浏览 0

History command raises ValueError if migration docstring has percent sign

Migrated issue, originally created by Wil Tan

When running alembic history, if the docstring of a particular migration module contains a percent (%) sign, Alembic would throw an error while it tries to print it.

Below, the description for revision "0012" is "Data migration to lower rate to 3%":

$ alembic history 0012 -> 0013 (head), Add Foo table


Traceback (most recent call last):
  File "dev\Scripts\alembic-script.py", line 5, in <module>
    exit(main())
  File "dev\lib\site-packages\alembic\config.py", line 486, in main
    CommandLine(prog=prog).main(argv=argv)
  File "dev\lib\site-packages\alembic\config.py", line 480, in main
    self.run_cmd(cfg, options)
  File "dev\lib\site-packages\alembic\config.py", line 463, in run_cmd
    **dict((k, getattr(options, k, None)) for k in kwarg)
  File "dev\lib\site-packages\alembic\command.py", line 386, in history
    _display_history(config, script, base, head)
  File "dev\lib\site-packages\alembic\command.py", line 364, in _display_history
    include_doc=True, include_parents=True))
  File "dev\lib\site-packages\alembic\config.py", line 160, in print_stdout
    (compat.text_type(text) % arg),
ValueError: incomplete format
</module>

该提问来源于开源项目:sqlalchemy/alembic

  • 写回答

6条回答 默认 最新

  • weixin_39890652 2020-11-30 11:37
    关注

    Wil Tan wrote:

    I made the following change as a quick fix:

    ~~~~{.diff} --- "dev/lib/site-packages/alembic/command.py" 2018-05-25 17:04:18.296138200 +1000 +++ "dev/libib/site-packages/alembic/command-new.py" 2018-05-25 16:56:29.237000000 +1000 @@ -358,10 +358,10 @@ if indicate_current: sc._db_current_indicator = sc.revision in currents

    • config.print_stdout(
    • sc.cmd_format(
    • desc = sc.cmd_format( verbose=verbose, include_branches=True,
    • include_doc=True, include_parents=True))
    • include_doc=True, include_parents=True)
    • config.print_stdout(desc.replace('%', '%%'))

      def _display_history_w_current(config, script, base, head): def _display_current_history(rev, context): ~~~~

    评论

报告相同问题?