Python Psycopg2模块介绍
我们知道Python是一种用于完成各种任务的编程语言,如数据分析、人工智能、机器学习等。显然,Python有一些具有特殊功能的不同模块帮助我们完成工作。
类似地,Python代码可以使用一个名为“Psycopg2模块”的模块与PostgreSQL数据库进行交互。它是一个流行的Python PostgreSQL数据库适配器。该模块提供了一组帮助我们进行数据库连接、结果处理和查询执行的函数和类。
Python中Psycopg2模块的关键特性
- 数据库连接 :Python中的Psycopg2模块带有一个“connect()”函数。该函数帮助我们建立与PostgreSQL数据库的连接。通过传递数据库名称、用户名、密码和主机等参数,我们可以连接到我们选择的数据库。
-
查询执行 :Psycopg2模块使我们能够针对连接的PsycopgSQL数据库输入SQL查询。通过“execute()”方法,我们可以执行诸如SELECT以访问数据、INSERT、UPDATE和DELETE以进行数据操作等SQL语句。
-
预备语句 :优化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循环,我们迭代表中的行。这样,我们可以获取每一行的所有数据。