欢迎来到第二天的数字海洋的12天!昨天,我们开始构建我们的生日提醒服务——一个简单的应用程序,可以发送即将到来的生日的短信通知。🎉 我们在数字海洋上设置了一个PostgreSQL数据库来存储联系人信息。
今天,我们将使用Python连接到该数据库,并设置我们的项目以保护敏感凭证。
到本帖结束时,您将拥有一个Python脚本,可以安全地从数据库中获取数据,并在我们将其托管在数字海洋上时准备好扩展。
✨ 为什么要这一步?
设置数据库只是开始。要构建任何有意义的应用程序,我们需要一种以编程方式与数据互动的方法。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
的新文件,并设置脚本从 .env
加载凭据,使用 python-dotenv
连接到我们的数据库。
下面是开始的代码:
这个脚本做了几件重要的事情:
- 安全地从你的
.env
文件加载凭据。 - 使用
pg8000.connect()
建立与数据库的连接。 - 根据结果打印成功或错误信息。
第4步:测试连接 ✅
现在,让我们确保一切正常。运行你的脚本:
如果一切设置正确,你应该看到:
如果出现错误:
- 请仔细检查你的.env文件中的值。
- 确保你的IP地址已添加到数据库的可信来源中(请参见第1天的第6步)。
第5步:从数据库获取数据 🔍
现在,让我们扩展脚本以获取数据。更新你的connect_to_db.py
脚本以包括以下内容:
这个脚本现在:
- 执行查询以获取联系人表中的所有记录。
- 将每条记录打印到控制台。
注意:如果表是空的,不用担心!你仍然可以检查脚本是否没有错误地运行。为了测试,你可以通过打开数据库使用 psql
(或你喜欢的工具)并运行以下 SQL 命令快速添加一个示例联系人:
如果你需要重新温习如何使用 psql,或者想探索像 pgAdmin 或 TablePlus 的 UI 工具,请查看 第一天 的说明。
🎁 总结
今天你完成了以下任务:
✅ 安装了所需的 Python 库。
✅ 使用 Python 连接到你的 DigitalOcean PostgreSQL 数据库。
✅ 通过简单查询从 contacts
表中获取数据。
接下来:明天,我们将开始添加逻辑,以查找即将到来的生日并使用 Twilio 发送短信通知。这是应用程序开始活跃的地方——敬请期待! 🚀
Source:
https://www.digitalocean.com/community/tutorials/connecting-to-postgresql-database-with-python