Python 中的 Psycopg2 模块介绍


我们知道 Python 是一种编程语言,用于完成数据分析、人工智能、机器学习等领域的各种任务。显然,还有许多具有特殊功能的模块可以帮助我们完成工作。

类似地,Python 代码可以使用名为“Psycopg2 模块”的模块与 PostgreSQL 数据库进行交互。它是 Python 的一个流行的 PostgreSQL 数据库适配器。此模块为我们提供了一套函数和类,可帮助我们进行数据库连接、结果处理以及查询执行。

Python 中 Psycopg2 模块的关键特性

  • 数据库连接:Python 中的 Psycopg2 模块带有一个“connect()”函数。此函数有助于建立与 PostgreSQL 数据库的连接。数据库名称、用户名、密码和主机等参数将传递给该函数,帮助我们连接到我们选择的数据库。

  • 查询执行:Psycopg2 模块使我们能够对已连接的 PsycopgSQL 数据库键入 SQL 查询。“execute()”方法帮助我们执行 SQL 语句,例如 SELECT 用于访问数据,INSERT、UPDATE 和 DELETE 用于数据操作。

  • 预处理语句:SQL 查询的优化是 Psycopg2 模块的一个非常有用的特性。只需准备一次 SQL 查询,然后使用不同的参数多次执行它,就能在性能方面带来很大的改进。

  • 事务管理:Psycopg2 为我们提供了一个函数来帮助管理事务。使用此模块可以更容易地启动事务、提交事务内的更改以及回滚所有更改。事务通过将多个数据库操作组合成一个单元来确保数据的完整性和一致性。

  • 错误处理:Psycopg2 处理与数据库相关的错误和异常,并为我们提供详细的错误消息和信息,这有助于我们调试数据库连接或查询执行的问题。

  • 结果处理:执行查询后,Psycopg2 模块提供方法来获取结果集、迭代行和访问返回的数据。我们可以获取单个列或将行作为字典访问,以便更容易地进行数据操作。

  • 数据类型转换:Psycopg2 会自动将 Python 对象转换为 PostgreSQL 支持的相应数据类型。转换也会反过来进行。它支持各种内置 PostgreSQL 数据类型,例如整数、字符串、日期、JSON 等。

在 Python 中安装 Postgre2 模块

在这里,我们将使用 pip 命令来安装 Psycopg2 模块。我们必须确保正在使用最新版本的 pip。在终端中,我们必须输入以下内容

pip install -U pip
pip install psycopg2-binary

这些命令将安装 Pycopg2 的二进制版本,不需要任何构建或运行时前提条件。

模块的使用

Psycopg2 模块有很多应用,例如在 Python 代码和 PostgreSQL 数据库之间建立连接。以下代码就是这样做的

示例

import psycopg2

DB_NAME = "tkgafrwp"
DB_USER = "tkgafrwp"
DB_PASS = "iYYtLAXVbid-i6MV3NO1EnU-_9SW2uEi"
DB_HOST = "tyke.db.elephantsql.com"
DB_PORT = "5692"

try:
   conn = psycopg2.connect(database=DB_NAME,
                user=DB_USER,
                password=DB_PASS,
                host=DB_HOST,
                port=DB_PORT)
   print("Database connected successfully")
except:
   print("Database not connected successfully")

在这里,我们可以看到数据库名称、数据库用户、密码、主机和端口已存储在不同的变量中。然后,为了使代码尽可能健壮,使用了 try 和 except 块。在 try 块中,我们使用“connect()”函数将 Python 代码连接到 PostgreSQL 数据库。该函数接收我们存储在不同变量中的所有内容。

连接到数据库后,我们当然希望对数据库做一些有用的事情。我们可以使用 Python 代码生成 SQL 查询!下面的代码片段将演示这一点

示例

import psycopg2

DB_NAME = "tkgafrwp"
DB_USER = "tkgafrwp"
DB_PASS = "iYYtLAXVbid-i6MV3NO1EnU-_9SW2uEi"
DB_HOST = "tyke.db.elephantsql.com"
DB_PORT = "5692"

conn = psycopg2.connect(database=DB_NAME,
                user=DB_USER,
                password=DB_PASS,
                host=DB_HOST,
                port=DB_PORT)
print("Database connected successfully")

cur = conn.cursor()
cur.execute("""
CREATE TABLE Employee
(
   ID INT  PRIMARY KEY NOT NULL,
   NAME TEXT NOT NULL,
   EMAI TEXT NOT NULL
)
""")
conn.commit()
print("Table Created successfully")

在这里,我们使用“cursor()”函数创建一个游标,然后将其存储在 cur 变量中。然后我们使用多行字符串的格式,并键入将进入数据库的 SQL 查询。然后我们使用 commit() 函数将这些更改应用到数据库。

也可以将数据插入到现有表中!之前我们创建了表,然后我们将数据输入到表中。下面的代码片段将向我们展示这一点

示例

import psycopg2

DB_NAME = "tkgafrwp"
DB_USER = "tkgafrwp"
DB_PASS = "iYYtLAXVbid-i6MV3NO1EnU-_9SW2uEi"
DB_HOST = "tyke.db.elephantsql.com"
DB_PORT = "5692"

conn = psycopg2.connect(database=DB_NAME,
                user=DB_USER,
                password=DB_PASS,
                host=DB_HOST,
                port=DB_PORT)
print("Database connected successfully")

cur = conn.cursor()
cur.execute("""
   INSERT INTO Employee (ID, NAME, EMAIL) VALUES
   (1, 'Virat Kohli','[email protected]'),
   (2,' Lionel Messi','[email protected]')
 """)
conn.commit()
conn.close()

在这里,我们使用 execute() 函数执行 SQL 语句,以将数据插入到现有表中。

除了将数据插入到实际数据库并在服务器上显示它之外,我们还可以显示 Python 终端中的数据。但首先,我们需要安装一个模块“mysqlx”。此模块在使用 SQL 数据库时也很有用。以下是代码

示例

from mysqlx import Rows
import psycopg2

DB_NAME = "tkgafrwp"
DB_USER = "tkgafrwp"
DB_PASS = "iYYtLAXVbid-i6MV3NO1EnU-_9SW2uEi"
DB_HOST = "tyke.db.elephantsql.com"
DB_PORT = "5692"

conn = psycopg2.connect(database=DB_NAME,
                user=DB_USER,
                password=DB_PASS,
                host=DB_HOST,
                port=DB_PORT)
print("Database connected successfully")

cur = conn.cursor()
cur.execute("SELECT * FROM Employee")
rows = cur.fetchall()
for data in rows:
   print("ID :" + str(data[0]))
   print("NAME :" + data[1])
   print("EMAIL :" + data[2])

print('Data fetched successfully and shown on the terminal!')
conn.close()

在这里,我们有从“mysqlx”模块获得的行。然后,通过使用 for 循环,我们迭代表的行。通过这种方式,我们从每一行获得所有数据。

更新于:2023年8月3日

浏览量 227 次

启动您的 职业生涯

完成课程获得认证

开始
广告