如何在Python中使用PostgreSQL
今天有许多不同类型的数据库在使用。我们有集中式数据库、商业数据库、云数据库、分布式数据库、最终用户数据库、NoSQL 数据库、关系数据库等等。
本文将重点介绍关系数据库 ( PostgreSQL ) 的示例以及如何从中查询数据。关系数据库的其他示例包括 MySQL、MariaDB 和 SQLite。在本教程中,您将学习如何使用 Python 安装、连接并最终查询 PostgreSQL 数据库。本文晓得博客为你介绍如何在Python中使用PostgreSQL。
什么是 PostgreSQL?
最著名的开源关系数据库之一是PostgreSQL。全世界各种规模的开发商和企业都在使用它。PostgreSQL 在 DB-Engines 中排名第四,并且流行度越来越高。考虑到许多 Web 和移动应用程序以及分析工具都使用 PostgreSQL 数据库,这并不令人意外。
PostgreSQL 还拥有一个强大的生态系统,其中包含大量可与主数据库配合使用的附加组件和扩展。由于这些原因,无论您是要创建自己的自定义数据库解决方案还是需要事务或分析数据库,PostgreSQL 都是一个绝佳的选择。
推荐:什么是MySQL
什么是 Psycopg2?
Psycopg2 库使用 C 编程语言作为libpq PostgreSQL 库的包装器以支持 Python DB API 2.0 标准。Psycopg2 的 C 实现使其非常快速和有效。使用 SQL 查询,我们可以利用 Psycopg2 从数据库中获取一行或多行。有了这个库,我们还可以使用各种单次或批量插入的方式将数据插入数据库。
该库就像 SQL(结构化查询语言),它执行查询语言可以执行的所有任务和操作。它对 Unicode 和 Python 3 都是友好的,并且还具有线程安全性,用于运行高度多线程的程序,这些程序经常生成和删除大量游标并同时执行大量INSERTS或UPDATES。Psycopg2 的功能包括客户端和服务器端游标、异步通信和通知。
如何安装 Psycopg2
我们必须先安装 Psycopg2 才能使用它。我们可以通过终端或命令提示符使用pip.
pip install psycopg2
pip3 install psycopg2
如果我们还决定在虚拟环境中安装连接器库,您可以使用以下代码:
virtualenv env && source env/bin/activate
pip install psycopg2-binary
Psycopg2 库及其所有依赖项将使用此代码片段安装到我们的 Python 虚拟环境中。
如何使用Python查询PostgreSQL
需要创建一个新文件并随意命名。然后在您的 IDE 中打开它并开始编写代码。首先要做的是导入库(这很重要)。我们将使用两个 Psycogp2 对象:
- 连接对象:与PostgreSQL数据库实例的连接由连接对象管理。封装使用函数创建的数据库会话connect()。
- 游标对象:游标对象使 Python 脚本可以在数据库会话中运行 PostgreSQL 命令。连接生成游标,然后该cursor()方法将它们永久地绑定到连接。所有命令都在包含连接的数据库会话的框架内执行。
import psycopg2
conn = psycopg2.connect(database="db_name",
host="db_host",
user="db_user",
password="db_pass",
port="db_port")
我们必须指定这些参数才能连接到数据库。让我们快速浏览一下那里的论点。
- 数据库:我们希望访问或连接的数据库的名称。请注意,我们只能使用一个连接对象连接到一个数据库。
- 主机:这很可能是指数据库服务器的 IP 地址或 URL。
- user:顾名思义,这是指 PostgreSQL 用户的名称。
- password:这是与 PostgreSQL 用户匹配的密码。
- port:PostgreSQL 服务器在本地主机上的端口号——通常是5432。
如果我们的数据库凭据输入正确,我们将收到一个实时数据库连接对象,我们可以使用它来构建游标对象。我们可以继续运行任何数据库查询并借助游标对象检索数据。
cursor = conn.cursor()
让我们写一个简单的查询:
cursor.execute("SELECT * FROM DB_table WHERE id = 1")
我们应用该execute()函数并提供一个查询字符串作为其参数。然后将使用我们输入的查询查询数据库。
如何使用fetchone():
为了能够使用Pyscopg2从数据库中检索数据,我们必须使用以下任何函数:fetchone() fetchall(), 或fetchmany(),运行 SQL 查询后,此函数将只返回第一行。这是从数据库中获取数据的最简单方法。
print(cursor.fetchone())
#output
(1, 'A-CLASS', '2018', 'Subcompact executive hatchback')
该函数以元组fetchone()的形式返回一行,其中的信息按照查询提供的列指定的顺序排列。在构造查询字符串时,准确提供列顺序至关重要,以便区分元组中的数据属于哪个。
如何使用fetchall():
该fetchall()函数的工作方式与 相同,fetchone()只是它返回的不仅仅是一行,而是所有行。因此,如果我们需要 20-200 行或更多行,我们可以使用 Psycopg2 fetchall()。
print(cursor.fetchall())
#output
[(1, 'A-CLASS', '2018', 'Subcompact executive hatchback'),
(2, 'C-CLASS', '2021', 'D-segment/compact executive sedan'),
(3, 'CLA', '2019', 'Subcompact executive fastback sedan'),
(4, 'CLS', '2018', 'E-segment/executive fastback sedan'),
(5, 'E-CLASS', '2017', 'E-segment/executive sedan'),
(6, 'EQE', '2022', 'All-electric E-segment fastback'),
(7, 'EQS', '2021', 'All-electric full-size luxury liftback'),
(8, 'S-CLASS', '2020', 'F-segment/full-size luxury sedan.'),
(9, 'G-CLASS', '2018', 'Mid-size luxury SUV, known as the G-Wagen'),
(10, 'GLE', '2019', 'Mid-size luxury crossover SUV')]
[...]
如何使用fetchmany():
该fetchmany()函数允许我们从数据库中获取大量记录,并使我们能够对获取的精确行数进行额外控制。
print(cursor.fetchmany(size=3))
#output
[(1, 'A-CLASS', '2018', 'Subcompact executive hatchback'),
(2, 'C-CLASS', '2021', 'D-segment/compact executive sedan'),
(3, 'CLA', '2019', 'Subcompact executive fastback sedan')]
将参数设置为 3,所以只收到了三行。当我们查询完数据库后,需要关闭连接conn.close()。
总结
以上是晓得博客为你介绍的如何在Python中使用PostgreSQL我们能够从一个 Python 脚本中执行所有这些任务,而且效果非常好。希望本文对您有所帮助,您现在可以使用 Python 使用 PostgreSQL。
Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折