尝试使用PEXPECT从python运行mysql grant查询

2024-09-24 04:28:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过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) 运行这些命令。我不确定我在格式方面出了什么问题。在


Tags: to命令cmdbyoncreatemysqlpassword
1条回答
网友
1楼 · 发布于 2024-09-24 04:28:25

您没有向我们展示您使用的命令的确切顺序(当然您不会pexpect.spawn那个特定的MySQL命令!)但看起来确实像是在通过一个shell传递cmd,当然,它正在吞噬那些不可或缺的双引号字符。在

由于不知道您使用的Python版本(因为您选择不告诉我们),所以很难知道建议什么。在3.3或更高版本中,shlex.quote是好的。如果您坚持使用不晚于2.7的早期版本,pipes.quote可能会有所帮助。但最好的办法可能是用一个转义版本来替换"

cmd = cmd.replace('"', r'\"')

并尝试使用新版本的cmd,而不是以前的版本,这个版本应该独立于Python版本工作。在

相关问题 更多 >