PostgreSQL Python 教程: 使用 SQLAlchemy 连接到 PostgreSQL

十二月 5, 2023

摘要:在本教程中,我们将学习在 Python 中如何使用 SQLAlchemy 连接到 PostgreSQL。

什么是 SQLAlchemy?

它是一个功能强大的库,有助于简化使用数据库的过程,并且广泛用于 Web 开发和数据分析。它提供了一些高级功能,例如连接池、语句缓存和负载均衡。这些高级功能有助于提高数据库应用程序的性能。

使用 SQLAlchemy 连接 PostgreSQL 的优势

以下是使用 SQLAlchemy 连接 PostgreSQL 的优点 –

  • SQLAlchemy 库丰富的功能和灵活性,为开发人员提供了访问各种数据库管理系统的优势。

    因此,开发人员可以在使用不同的数据库时,使用相同的接口和代码结构。这有助于节省时间和精力。

  • SQLAlchemy 提供了一个对象关系映射(ORM)框架,使开发人员能够使用 python 类和对象来访问 PostgreSQL 进行操作。

    形成的这一层简化了与数据库交互的过程,并使开发人员可以专注于应用程序逻辑,而不是数据库细节。

  • Psycopg2 是一个 Python 库,它提供了一组接口,可用于使用 python 访问 PostgreSQL 数据库进行操作。它提供了对 PostgreSQL 高级功能的支持,例如服务器端游标、事务管理和异步连接。它广泛用于 Web 开发、数据分析,这些需要数据持久化的领域。

前提条件

在继续操作之前,请确保如下组件已在系统中安装并正常运行。

  • Python 3
  • Psycopg2 和 SQLAlchemy 包

如何安装所需的 Python 包?

通过使用 pip(一个 Python 的包安装程序),可用于安装 psycopg2 和 SQLAlchemy。在系统中打开命令提示符,并运行以下命令。

pip install psycopg2
pip install sqlalchemy
  • 第一步是安装所需的软件包。下一步是用 SQLAlchemy 连接 PostgreSQL。您可以使用 SQLAlchemy 的 create_engine() 函数创建与 PostgreSQL 数据库的连接。
  • 将数据库 URL 地址传递给此函数;该地址应包含数据库名称、用户名、密码、主机和端口号。

示例

让我们准备一段代码,来解释如何使用 create_engine() 连接到 PostgreSQL 数据库。

from sqlalchemy import create_engine
# for postgreSQL database credentials can be written as 
user = 'username'
password = 'your_password'
host = 'localhost'
port = '5432'
database = 'mydb'
# for creating connection string
connection_str = fpostgresql://{user}:{password}@{host}:{port}/{database}
# SQLAlchemy engine
engine = create_engine(connection_str)
# you can test if the connection is made or not
try:
    with engine.connect() as connection_str:
        print('Successfully connected to the PostgreSQL database')
except Exception as ex:
    print(f'Sorry failed to connect: {ex}')

我们通过从 SQLAlchemy 库导入函数,来开始编码。然后,我们定义了 PostgreSQL 数据库的访问凭据。下一步是使用这些凭据创建连接字符串。您可以使用提供给数据库的真实凭据,来更改这些凭据信息。

接下来,我们使用 create_engine() 函数来创建一个 SQLAlchemy 引擎对象。此对象表示了数据库连接,可用于在数据库上执行 SQL 命令。

使用 SQLAlchemy 连接到 PostgreSQL 后,您可以使用引擎对象的 execute() 方法在数据库上执行 SQL 命令。

错误

在编写完代码执行代码的时候,您可能会看到错误。让我们来看看一些常见的错误和解决方案。

  • 可能面临的一个基本错误是导入错误,您可以通过在命令提示符下使用 pip 安装模块,来简单地解决此错误。

  • 执行 SQL 命令时,可能会遇到如下错误。如果连接字符串中的用户名在 PostgreSQL 中不存在,则可能会出现此错误。

    sqlalchemy.exc.OperationalError: (psycopg2.OperationalError)
    FATAL: role “username” does not exist
    
  • 您可能会遇到模块无法连接到服务器的操作错误。您可以通过检查网络配置,或启动 PostgreSQL 服务器,来解决此错误。

结论

我们可以从教程中得出结论,SQLAlchemy 是一个用于访问操作数据库的强大的 Python 库,因为它提供了在数据操作和数据连接方面的灵活性。使用 SQL 的 ORM 能力,可以以更具表现力的方式在 python 中编写代码,与 PostgreSQL 数据库进行交互。