我想在 python 中执行 mysqldump 并在 mysqldump 请求时提供密码。
在命令行中添加密码不是一个选项,它必须通过标准输入提供。
这是我到目前为止所做的: 命令 = [ 'mysqldump', '-h', mysqlhost, '-P',mysql端口, '-u',mysql用户, '-p', mysql数据库 ]
mysqlfile = mysqlpath + "/" + mysqldb + ".sql"
with open(mysqlfile, "w+") as file:
p = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=file)
p.communicate(input=mysqlpass)
p.wait()
但是当我执行代码时,终端挂起请求密码。
谢谢。
最佳答案
您可以为此使用 pexpect。这是经过修改的代码,因为我必须对其进行测试,但你明白了:
import pexpect
command2 = 'mysqldump -h localhost -u root -p xyzzy'
mysqlfile = "/tmp/foo.sql"
with open(mysqlfile, "w+") as file:
p = pexpect.spawn(command2)
p.expect("Enter password: ")
p.sendline("foobar")
q = p.read()
p.wait()
file.write(q)
这里“foobar”是我的数据库密码。
汉奴
关于python - 用python执行mysqldump并通过stdin设置密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40590139/