3分钟掌握Python:Psycopg2操作PostgreSQL的完全指南!

发表时间: 2020-04-15 20:18


本Python PostgreSQL教程演示了如何使用PostgreSQL数据库服务器开发Python数据库应用程序。在Python中,我们有用于连接和使用PostgreSQL的serval模块。以下是清单。

  • Psycopg2
  • PG 8000
  • Py-PostgreSQL
  • PyGreSQL
  • ocpgdb
  • bpgsql
  • SQLAlchemySQLAlchemy需要单独安装上述任何一个。

注: 最重要的是,所有接口或模块都遵循Python数据库API规范v2.0(PEP 249)。此API旨在鼓励和维护用于访问数据库的Python模块之间的相似性。换句话说,所有模块的语法、方法和访问数据库的方式都是相同的。

在本教程中,我们将坚持使用Psycopg2。为什么

  • Phocopg 2是PostgreSQL最流行的python驱动程序。
  • 它是大多数Python和Postgres框架所必需的。
  • 积极维护和支持Python的主要版本,即Python3和Python2。
  • 它是线程安全的(线程可以共享连接)。它是为大量多线程应用程序设计的。
  • 安装Python3并使用其API访问PostgreSQL数据库。
  • 然后它带你穿过数据插入, 数据检索, 数据更新,和数据删除.
  • 接下来,它将涵盖事务管理, 连接池,和错误处理技术使用PostgreSQL开发健壮的python程序。
  • 现在让我们看看每一节。

    使用pip命令安装Maicopg 2

    要使用Python中的PostgreSQL,您需要在计算机上安装Messcopg 2。这个模块可以在pypi.org上找到。

    使用pip命令,您可以在任何操作系统上安装Messcopg 2包括, MacOS, linux,和Unix乌本图。使用下面的pip命令安装Maicopg 2。

    pip install psycopg2

    还可以使用以下命令安装特定版本。

    pip install psycopg2=2.7.5

    如果您面临pip安装错误类似于“连接错误:[SSL:证书_验证_失败]证书验证失败(_ssl.c:598)”。您可以通过将pypi.org和files.pythonhosted.org设置为受信任的主机来解决此错误。请试着遵循pip命令若要安装精神科2,请执行以下操作。

    python -m pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org psycopg2

    验证Maicopg 2的安装

    运行上述命令后,您应该得到以下消息。

    • 收集Psycopg2
    • 下载Psycopg2-2.7.5
    • 安装收集的软件包:Psycopg2
    • 成功安装Psycopg2-2.7.5
      Python PostgreSQL数据库连接

    在本节中,我们将学习如何通过python连接PostgreSQL。要执行连接,您需要了解PostgreSQL的以下细节。

    从Python连接PostgreSQL数据库所需的参数

    • 这个用户名使用PostgreSQL时,PostgreSQL数据库的默认用户名是Postgres。
    • 密码-用户在安装PostgreSQL时提供密码。
    • 主机名-是正在运行PostgreSQL的服务器名称或IP地址。如果您正在本地主机上运行,则可以使用localhost,也可以使用IP,即127.0.0.0
    • 数据库名-要连接到的数据库名称。这里我们使用的是名为“postgres_db”的数据库。

    通过python连接PostgreSQL的步骤

    • 使用connect()使用必要的参数来连接PostgreSQL。
    • 创建一个光标对象,该对象使用由CONNECT方法返回的连接对象。执行PostgreSQL查询从Python。
    • 工作完成后,关闭游标对象和PostgreSQL数据库连接。
    • 如果在此过程中可能发生任何异常,请捕获异常。

    Python示例连接PostgreSQL数据库

    要连接PostgreSQL数据库并执行SQL查询,必须知道要连接的数据库名。如果您没有创建任何数据库,我建议您在继续之前创建一个数据库。

    从Python连接到PostgreSQL之后,您应该获得以下输出

    {'user': 'postgres', 'dbname': 'pynative_DB', 'host': '127.0.0.1', 'port': '5432', 'tty': '', 'options': '', 'sslmode': 'prefer', 'sslcompression': '1', 'krbsrvname': 'postgres', 'target_session_attrs': 'any'} You are connected to -  ('PostgreSQL 10.3') PostgreSQL connection is closed

    详细了解PostgreSQL数据库连接代码

    导入psycont2

    • 这一行在我们的程序中导入了心理学2模块。使用已定义的类和方法,我们可以与PostgreSQL通信。

    来自psycopg2导入错误

    • 在使用Python的PostgreSQL时,我们可以使用棱镜2的Error类来处理任何可能发生的数据库错误和异常。使用这种方法,我们可以使我们的应用程序健壮。
    • 这个模块帮助我们更详细地理解错误。它返回错误消息和错误代码。

    psycopg2.连接()

    使用connect()方法可以创建到PostgreSQL数据库实例的连接。这将返回PostgreSQL连接对象。这个连接是线程安全的,可以在多个线程之间共享.

    • 这个connect()方法接受我们前面讨论过的各种参数。
    • 在我们的示例中,我们传递了以下连接参数来连接PostgreSQL。
      user = "postgres", password = "pass@#29", host = "127.0.0.1", port = "5432",database = "postgres_db"

    cursor = connection.cursor()

    • 使用connection.cursor()我们可以创建一个游标对象,它允许我们通过Python源代码执行PostgreSQL命令。
    • 我们可以从单个连接对象创建任意数量的游标。从同一连接创建的游标并不是孤立的,即游标对数据库所做的任何更改都会被其他游标立即看到。
    • 游标不是线程安全的.

    之后,我们使用
    connection.get_dsn_parameters().

    cursor.execute()

    • 使用游标的EXECUTE方法,我们可以执行数据库操作或查询。
    • Execute方法将SQL查询作为参数。
    • 我们可以使用游标方法检索查询结果,例如fetchone(), fetchmany(), fetcthall().
    • 在我们的示例中,我们正在执行一个SELECT version();查询以获取PostgreSQL版本。

    尝试-除了-最终阻止

    • 我们将所有代码放在try-out块中,以捕获在此过程中可能发生的数据库异常和错误。

    cursor.close()和connection.close()

    • 工作完成后关闭游标和连接对象始终是很好的做法,以避免数据库问题。

    PythonPostgreSQL创建表

    在本节中,我们将学习如何在PostgreSQL中通过Python代码创建一个数据库表。我在python中创建了一个示例,以便在PostgreSQL中创建一个Mobile表。

    在Python中用PostgreSQL创建表的步骤

    • 准备创建表查询。
    • 接下来,使用psycopg2.connect()。在本文的开头,我已经解释了PostgreSQL连接代码。
    • 使用cursor.execute()
    • 最后,关闭数据库连接和游标对象。
    • 现在让我们看看这个例子。

    您应该得到以下输出

    Table created successfully in PostgreSQLPostgreSQL connection is closed

    注-如您所见,我们定义了一个CREATETABLE查询,并将其传递给cursor.Execute()函数。最后,我们使用COMMIT()方法将更改提交到数据库。

    Python PostgreSQL CRUD操作

    我们知道表,现在让我们转到CRUD操作。

    在本节中,我们将学习如何从Python执行PostgreSQL CRUD操作。从python中插入、更新和删除查询,使用Phocopg 2操作PostgreSQL数据库。

    现在让我们看看每一节。

    • 从Python的PostgreSQL表中选择数据-在本文中,我们将学习如何从Python应用程序执行PostgreSQL SELECT查询来从数据库表中获取数据。我们还将学习如何使用菲丘尔(), fetchmany()和fetchone()方法从表中提取有限的行。
    • 从Python将数据插入PostgreSQL表-在本节中,我们将学习如何从python应用程序执行INSERT查询,以便将行或记录插入PostgreSQL表。
    • 从Python更新PostgreSQL表的数据-在本节中,我们将学习如何从python应用程序执行Update查询,以更新PostgreSQL表的行或记录。
    • 从Python中删除PostgreSQL表中的数据-在本节中,我们将学习如何执行从python应用程序到Delete行的删除查询或从PostgreSQL表执行记录。

    用Python调用PostgreSQL函数和存储过程

    PostgreSQL函数和存储过程可以执行不同的操作,可以是数据操作或数据检索。我们可以从Python中执行这样的函数。

    在本节中,我们将学习如何在Python中执行PostgreSQL函数和存储过程。参考如何从Python执行PostgreSQL函数和存储过程。

    Python PostgreSQL事务管理

    在本文中,我们将看到如何使用内核2管理Python中的PostgreSQL事务。

    • 我们将看到如何使用Connection类的COMMIT和ROLLBACK方法来管理Python中的事务。
    • 我们还将看到如何从Python更改PostgreSQL事务隔离级别。

    参考我们的完整指南如何从Python管理PostgreSQL事务.

    Python PostgreSQL连接池

    在本节中,我将告诉您连接池是什么,以及如何使用Python中的Messcopg 2实现PostgreSQL数据库连接池

    • 使用Phocopg 2,我们可以为一个简单的应用程序实现一个连接池,也可以为多线程应用程序实现一个连接池。
    • 使用连接池可以提高以数据库为中心的应用程序的速度和性能。.
    • 使用心理学2,我们可以实现一个简单的连接池用于单线程应用程序和螺纹连接池用于多线程环境。

    参考我们的完整指南PythonPostgreSQL连接池,使用Phocopg 2。

    Python数据库编程测试与练习项目

    解决我们的自由Python数据库编程测试测试Python数据库概念。

    解决我们的自由Python数据库练习项目来实践和掌握Python数据库操作PostgreSQL

    • 在这个练习项目中,我们将实施医院信息系统。它涵盖了所有的主题。
    • 在本Python数据库练习中,我们将从Python执行数据库CRUD操作。演习还包括事务管理错误处理技术。