如何在 Python 中连接和使用 PostgreSQL

核心要点

  • 为你的操作系统下载并安装 PostgreSQL,然后利用 psycopg2 库从 Python 代码连接到 PostgreSQL 数据库。
  • 通过 pgAdmin4 获取连接到 Postgres 服务器所需的服务器认证信息。
  • 在 Python 中,使用 SQL 命令创建、验证或删除 PostgreSQL 数据库。

如果你正在开发需要访问 Postgres 数据库中数据的 Python 程序,那么了解如何建立两者之间的连接至关重要。一旦成功连接,你便可以执行查询,从而获取或保存数据。

下载并安装 PostgreSQL

PostgreSQL 是你编程项目的理想选择。你可以根据你的操作系统下载并安装适合的版本。Postgres 支持在 Windows、macOS 和 Ubuntu Linux 等主流操作系统上下载安装。

安装步骤因操作系统而异,请务必遵循相应的安装指南以确保安装过程顺利无误。

安装必要库

psycopg2 库允许你从 Python 连接到 PostgreSQL 数据库。在 Python 解释器中执行以下命令来确认该库是否已安装:

import psycopg2

如果收到错误提示(例如,“没有名为 ‘psycopg2’ 的模块”),请使用以下命令来安装这个库:

pip install psycopg2

PIP 是一个 Python 包管理器,它可以安装在 Windows、Mac 或 Linux 系统上。它简化了 Python 包的安装过程。

使用 pgAdmin4 获取认证信息

pgAdmin4 应用程序为你提供了一个 GUI 环境,让你能够管理 Postgres 数据库。你可能在安装 Postgres 时已经安装了它,不过你也可以 下载pgAdmin4 并单独安装。

以下是如何使用 pgAdmin4 获取服务器认证信息的步骤:

  • 从应用程序菜单中打开 pgAdmin4。
  • 点击屏幕左侧的“服务器”菜单。
  • 输入你在设置过程中设置的 Postgres 密码。
  • 成功连接到服务器后,右键点击 PostgreSQL 16 项,然后选择“属性”。
  • 在“属性”对话框中,点击“连接”。
  • 记录下主机名、端口号和用户名。
  • 连接到 Postgres 服务器

    有了你的认证信息,就可以利用 psycopg2 库建立与 Postgres 服务器的连接。为此,你需要使用 connect 函数,如下所示:

    conn = psycopg2.connect(host="localhost", port="5432", user="postgres", password='你的密码')

    接下来,必须使用游标函数在 Python 环境中执行 Postgres 命令:

    cur = conn.cursor()

    最后,你可以设置自动提交标志,以确保 Python 执行并提交每个代码语句。这样,你就不需要在每行代码之后传递单独的提交语句。

    conn.set_session(autocommit = True)

    你可以一次性运行这些语句来连接到 Postgres 服务器的本地实例。

    如何创建 Postgres 数据库

    Postgres 数据库在存储相关表集合中起着至关重要的作用。使用 CREATE DATABASE SQL 命令创建一个新的数据库,然后你可以将其传递给游标对象的执行方法:

    try:
    cur.execute('''CREATE DATABASE 你的数据库名称''')
    except psycopg2.Error as e:
    print(e)

    你应该始终小心处理可能出现的任何异常。这个示例只打印发生的任何错误,但是在生产代码中,你需要采取适当的操作。

    在 pgAdmin4 中检查数据库

    当你运行上述查询时,你可以通过 pgAdmin4 检查是否成功创建了数据库。在界面中,刷新已有的数据库列表,然后查找你新创建的数据库。

    例如,如果你使用上述查询创建了一个名为 music 的示例数据库,它应该显示在 Postgres 16 > 数据库类别下方的数据库列表中。

    如何删除 Postgres 数据库

    如果你不再需要某个特定的数据库,可以使用以下命令删除(或“删除”)它:

    try:
    cur.execute('''DROP DATABASE 你的数据库名称''')
    except psycopg2.Error as e:
    print(e)

    你需要使用 drop 命令,而不是 create 命令。执行后,你将不再看到被删除的数据库。