解決在Python中運行需要密碼的bash命令的方法
P粉476046165
P粉476046165 2024-03-22 13:20:24
0
1
630

我正在寫一個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)
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板