Python 中 Psycopg2 模块简介

pythonserver side programmingprogramming更新于 2024/1/6 21:08:00

我们知道 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 和 accept 块。在 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','viratk@gmail.com'),
   (2,' Lionel Messi','leomessi87@gmail.com')
 """)
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 循环遍历表的行。这样,我们就获取了每行的所有数据。


相关文章