歡迎來到第二天的12天的DigitalOcean!昨天,我們開始建設我們的生日提醒服務——一個簡單的應用程式,可以發送即將到來的生日的SMS通知。🎉 我們在DigitalOcean上設置了一個PostgreSQL數據庫來存儲聯絡資料。
今天,我們將使用Python連接到該數據庫,並設置我們的項目以保護敏感憑證。
在這篇文章結束時,您將擁有一個Python腳本,能夠安全地從您的數據庫中獲取數據,並在我們將其托管在DigitalOcean時準備好擴展。
✨ 為什麼這一步?
設置數據庫只是個開始。要構建任何有意義的應用程式,我們需要一種以程式化方式與這些數據互動的方法。Python使得連接到PostgreSQL數據庫變得簡單,借助像pg8000這樣的庫,我們可以用幾行代碼來處理PostgreSQL數據庫。
為了保持安全,我們將把數據庫憑證存儲在 .env
文件中,並使用 python-dotenv 將其加載到我們的腳本中。這確保了您的憑證不會硬編碼到腳本中,使得分享和部署應用程序更加安全。
🚀 您將學到的內容
今天的計劃如下:
- 將敏感憑證存儲在
.env
文件中。 - 使用
python-dotenv
將這些憑證加載到您的腳本中。 - 編寫 Python 腳本以安全地連接到您的 PostgreSQL 數據庫,使用
pg8000
- 從
contacts
表中提取並顯示數據
到最後,您將擁有構建應用邏輯的堅實基礎。
🛠 您將需要的內容
在深入之前,這是您需要的內容:
- 我們在 第一天 設置的數據庫。 TODO: 連結到第一天的 URL
- 在您的本機上安裝 Python(我們建議使用 Python 3.8 以上版本)。
🧑🍳 第二天食譜:使用 Python 連接 PostgreSQL
步驟 1:安裝所需的庫 📦
為了將 Python 連接到 PostgreSQL 並保護我們的憑證,我們將使用兩個關鍵庫:
- pg8000:一個純 Python 庫,允許您連接並與 PostgreSQL 數據庫互動。
- python-dotenv:一個實用工具,用於從
.env
文件中加載敏感憑證(如數據庫用戶名和密碼),這樣您就不必在腳本中硬編碼它們。
讓我們現在安裝它們。在終端中運行此命令:
專業提示:如果您正在使用虛擬環境(這總是一個好主意!),請確保在運行上述命令之前激活它,以保持您的依賴關係井然有序。
步驟 2:創建 .env 文件 📂
在您的專案目錄中,創建一個名為 .env 的文件。這裡將存儲我們的數據庫憑證。添加以下內容:
用 第一天 的憑證替換佔位符值。
專業提示:將 .env
添加到您的 .gitignore
文件中,以確保您的憑證不會意外推送到版本控制中。
步驟 3:創建 Python 腳本 🐍
創建一個名為 connect_to_db.py
的新文件,並設置腳本以使用 python-dotenv
從 .env
加載憑證,並連接到我們的數據庫。
以下是開始的代碼:
這個腳本做了一些重要的事情:
- 安全地從您的
.env
文件中加載憑證。 - 建立與您的資料庫的連接,使用
pg8000.connect()
。 - 根據結果打印成功或錯誤消息。
步驟 4:測試連接 ✅
現在,讓我們確保一切正常運行。運行您的腳本:
如果一切設置正確,您應該會看到:
如果出現錯誤:
- 請仔細檢查您的 .env 文件中的值。
- 確保您的 IP 地址已添加到資料庫的受信來源中(請參見第 1 天的步驟 6)。
步驟 5:從資料庫中獲取數據 🔍
現在,讓我們擴展腳本以獲取數據。更新您的 connect_to_db.py
腳本以包含以下內容:
這段程式碼現在:
- 執行一個查詢以從聯絡人表中擷取所有記錄。
- 將每條記錄列印到控制台。
注意: 如果表格是空的,別擔心!您仍然可以檢查程式碼是否正常執行而不出錯。為了測試,您可以通過使用 psql
(或您偏好的工具)打開資料庫,並執行此 SQL 命令來快速添加一個範例聯絡人:
如果您需要重新學習如何使用 psql,或想探索像 pgAdmin 或 TablePlus 的 UI 工具,請參考 第 1 天 的說明。
🎁 總結
今天您完成了以下事項:
✅ 安裝了所需的 Python 函式庫。
✅ 使用 Python 連接到您的 DigitalOcean PostgreSQL 數據庫。
✅ 通過簡單的查詢從 contacts
表中獲取數據。
接下來: 明天,我們將開始添加邏輯來查找即將到來的生日並使用 Twilio 發送簡訊通知。這是應用程式開始活躍的時刻—敬請期待! 🚀
Source:
https://www.digitalocean.com/community/tutorials/connecting-to-postgresql-database-with-python