从 django fabfile 运行 mysql 查询



如何使用我的fab文件运行SQL查询,如下所示

def allow_webservers_for_db():
    for ip in env.web_servers:
        run('echo "GRANT ALL ON %s.* TO '%s'@'%s' IDENTIFIED BY '%s'; | mysql --user=%s --password=%s"' % (env.db_schema, env.db_web_user, ip, env.db_password, env.db_user, env.db_password), pty=True)
        run('echo "UPDATE db SET host='%s' where db='%s'; | mysql --user=%s --password=%s --database=mysql"' % (ip, env.db_schema, env.db_web_user, env.db_password), pty=True)
        run('echo "UPDATE user SET host='%s' where user='%s';| mysql --user=%s --password=%s  --database=mysql"' % (ip, env.db_web_user, env.db_user, env.db_password), pty=True)

代码运行没有错误,但不执行它必须执行的操作。如果我将echo生成的代码复制并粘贴到 mysql 终端mysql>查询正常运行。

我在这里错过了什么?有没有办法更好地运行mysql查询?我也不想从文本文件加载它。

你只是在回显整个字符串。但是您希望将第一部分回显到 mysql 的管道中。取下最后一个"并将其放在 ;| 之间。

第一行示例:

run('echo "GRANT ALL ON %s.* TO '%s'@'%s' IDENTIFIED BY '%s';" | mysql --user=%s --password=%s' ....

最新更新