我试图通过python管道运行mysql命令
cmd='CREATE DATABASE {0} ; GRANT ALL PRIVILEGES ON {1}.* TO "{2}"@"%" identified by password "{3}";'.format(requested_database_name,requested_database_name,'xyz',requested_password)
其中密码是mysql生成的哈希。我总是
^{pr2}$但是当我看到cmd的输出时,我正在尝试运行
CREATE DATABASE db1 ; GRANT ALL PRIVILEGES ON db1.* TO "xyz"@"%" identified by password "*ASSFS3FS2";
它看起来不错,直接在mysql提示符下运行良好。在
我使用pipe = pexpect.spawn(cmd)
运行这些命令。我不确定我在格式方面出了什么问题。在
您没有向我们展示您使用的命令的确切顺序(当然您不会
pexpect.spawn
那个特定的MySQL命令!)但看起来确实像是在通过一个shell传递cmd
,当然,它正在吞噬那些不可或缺的双引号字符。在由于不知道您使用的Python版本(因为您选择不告诉我们),所以很难知道建议什么。在3.3或更高版本中,
shlex.quote
是好的。如果您坚持使用不晚于2.7的早期版本,pipes.quote
可能会有所帮助。但最好的办法可能是用一个转义版本来替换"
:并尝试使用新版本的
cmd
,而不是以前的版本,这个版本应该独立于Python版本工作。在相关问题 更多 >
编程相关推荐