Mysql 在 django 中使用 fab 和 curses 恢复数据库

Mysql database restoring with fab and curses in django

@hosts(['localhost'])
def start():
    import curses
    screen = curses.initscr()
    backup_file = db_backup.sql
    local("mysql -u %s -p %s < " % (
        db_username,db_name) + backup_file)

现在我 运行 这个 fab start

它要求输入密码,我输入密码后屏幕没有反应。

谁能知道这里发生了什么?如果我删除诅咒它工作正常。

local 命令正在提示输入密码。这期望终端模式设置正常,因此如果您按 Enter(发送 ^M),它会映射到换行符(^J)。

当您使用 curses.initscr 初始化 curses 时,会更改终端模式,因此映射不会完成。当您调用 getch.

时,curses 库会执行其 own 映射

如果你按 controlJ 而不是 Enter,那应该可以安抚密码提示在 local 命令中。

由于您的示例没有使用 curses(也许 稍后)您可以省略它,或者将初始化移到您需要使用它的地方。

在任何情况下,您可能无法通过 curses 使 local 命令在脚本中使用密码提示(不假设和依赖特殊设备)。

通过暂停诅咒,它会return到终端。我们可以在哪里完成恢复数据库任务。