解决在Python中运行需要密码的bash命令的方法
P粉476046165
P粉476046165 2024-03-22 13:20:24
0
1
632

我正在编写一个Python函数,需要使用bash将MySQL数据库导出为.sql文件。我使用的是mysqldump命令。

mysqldump -u bandana -p movies > /Users/Mac/Downloads/testOutput.sql

这个命令对我的目的来说足够好用。我的问题是如何将它转换为可以从函数中运行的Python脚本。

我尝试使用os.system,但是在运行过程中需要在终端中输入密码。

def cloneDB():
    os.system("mysqldump -u bandana -p movies > /Users/Tis_Me/Downloads/testOutput.sql")

输入密码:

我还尝试使用subprocesses模块,但是我对它一无所知。我只是得到了一些我不知道如何解决的错误。

def cloneDB():
    subprocess.run(["mysqldump", "-u bandana", "-p movies", "> /Users/Tis_Me/Downloads/testOutput.sql"])

我想知道是否有任何额外的参数或者其他东西可以添加,以便自动输入密码,这样函数就不需要询问密码了。

期望的结果是cloneDB()函数在不需要询问密码的情况下运行。

P粉476046165
P粉476046165

全部回复(1)
P粉647504283

您可以将密码直接放在命令行中,紧跟在-p之后

您也不能将输出重定向放在参数列表中。那是shell语法,而不是命令参数。您可以使用subprocess.run()stdout选项来重定向其输出。

def cloneDB():
    password = "something"
    with open("/Users/Tis_Me/Downloads/testOutput.sql", "w") as sqlfile:
        subprocess.run(["mysqldump", "-u", "bandana", f"-p{password}", "movies"], stdout=sqlfile)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板