Python查询PostgreSQL数据库

简介: 木头左教你如何用Python连接PostgreSQL数据库:安装`psycopg2`库,使用提供的代码模板建立连接。执行SQL脚本,如创建表、插入和查询数据,同时掌握错误处理和事务管理,确保数据一致性。关注性能优化和高级特性,如索引、批量操作以及PostgreSQL的存储过程和触发器。别忘了点赞哦!

哈喽,大家好,我是木头左!

Python与PostgreSQL的连接

需要了解如何在Python中连接到PostgreSQL数据库。这通常涉及到使用一个库,如psycopg2,它是Python中用于PostgreSQL的最流行的适配器。安装psycopg2非常简单,可以通过pip进行安装:

pip install psycopg2

安装完成后,可以使用以下代码来建立与PostgreSQL数据库的连接:

import psycopg2

try:
    connection = psycopg2.connect(user="your_username",
                                  password="your_password",
                                  host="127.0.0.1",
                                  port="5432",
                                  database="your_database")
    cursor = connection.cursor()
    print("Connected to PostgreSQL database!")
except (Exception, psycopg2.Error) as error:
    print("Error while connecting to PostgreSQL", error)
finally:
    if connection:
        cursor.close()
        connection.close()
        print("PostgreSQL connection is closed!")

这段代码将尝试连接到本地运行的PostgreSQL数据库,并创建一个游标对象,该对象允许执行SQL命令。

执行SQL脚本

一旦建立了连接,就可以使用Python来执行SQL脚本了。这些脚本可以是创建表、插入数据、查询数据等任何有效的SQL命令。以下是一个简单的例子,展示如何创建一个名为users的表,并向其中插入一些数据:

import psycopg2

# 连接到数据库
connection = psycopg2.connect(user="your_username",
                              password="your_password",
                              host="127.0.0.1",
                              port="5432",
                              database="your_database")
cursor = connection.cursor()

# 创建users表
create_table_query = """
CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    age INTEGER
);
"""
cursor.execute(create_table_query)

# 插入数据
insert_data_query = "INSERT INTO users (name, age) VALUES (%s, %s);"
data = [("Alice", 25), ("Bob", 30), ("Charlie", 35)]
cursor.executemany(insert_data_query, data)
connection.commit()

# 查询数据
select_data_query = "SELECT * FROM users;"
cursor.execute(select_data_query)
rows = cursor.fetchall()
for row in rows:
    print(row)

# 关闭连接
cursor.close()
connection.close()

在这个例子中,首先创建了一个users表,然后插入了一些用户数据,最后执行了一个查询来获取所有用户的信息。通过这种方式,可以非常灵活地执行各种SQL操作。

错误处理和事务管理

在执行数据库操作时,错误处理和事务管理是非常重要的。psycopg2提供了异常类来帮助捕获和处理可能发生的错误。此外,还可以使用commit()rollback()方法来管理事务。以下是一个包含错误处理和事务管理的示例:

import psycopg2
from psycopg2 import Error

try:
    connection = psycopg2.connect(user="your_username",
                                  password="your_password",
                                  host="127.0.0.1",
                                  port="5432",
                                  database="your_database")
    cursor = connection.cursor()

    # 创建表
    create_table_query = """
    CREATE TABLE users (
        id SERIAL PRIMARY KEY,
        name VARCHAR(100),
        age INTEGER
    );
    """
    cursor.execute(create_table_query)

    # 插入数据
    insert_data_query = "INSERT INTO users (name, age) VALUES (%s, %s);"
    data = [("Alice", 25), ("Bob", 30), ("Charlie", 35)]
    cursor.executemany(insert_data_query, data)

    # 提交事务
    connection.commit()

except Exception as error:
    # 发生错误时回滚事务
    print("An error occurred:", error)
    connection.rollback()

finally:
    # 关闭连接
    cursor.close()
    connection.close()

在这个例子中,如果在创建表或插入数据的过程中发生任何错误,将回滚事务,确保数据库保持一致状态。这是一个好的实践,可以防止部分完成的事务对数据库造成损害。

性能优化和高级特性

当处理大量数据时,性能优化变得至关重要。Python和PostgreSQL都提供了许多高级特性来帮助提高查询效率和数据处理速度。例如,可以使用索引来加速查询,或者使用批量操作来减少数据库的访问次数。此外,PostgreSQL还支持存储过程和触发器,这允许在数据库层面执行复杂的逻辑。

我是木头左,感谢各位童鞋的点赞、收藏,我们下期更精彩!

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
弹性计算 Ubuntu Shell
为eRDMA注册超大内存
本文介绍如何在eRDMA环境下注册大量内存。
800 0
|
11月前
|
人工智能 开发框架 运维
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
Serverless MCP 运行时业界首发,函数计算支持阿里云百炼 MCP 服务!阿里云百炼发布业界首个全生命周期 MCP 服务,无需用户管理资源、开发部署、工程运维等工作,5 分钟即可快速搭建一个连接 MCP 服务的 Agent(智能体)。作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力。
 Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
|
12月前
|
存储 缓存 人工智能
阿里云Tair KVCache:打造以缓存为中心的大模型Token超级工厂
Tair KVCache 是阿里云推出的面向大语言模型推理场景的缓存加速服务,基于分布式内存池化和分级缓存体系,解决显存墙与带宽瓶颈问题。为万亿参数模型的高效推理提供技术保障,推动 AI 算力进化与规模化应用。
|
存储 算法 网络安全
Intel QAT 加速的数据压缩和 TLS 加解密技术 | 龙蜥大讲堂 102 期
Intel QAT(QuickAssist Technology)加速的数据压缩和TLS加解密技术,由Intel网络与边缘事业部唐志军分享。课程涵盖QAT简介、数据压缩、安全应用及价值主张,重点介绍QAT在CPU密集型任务中的加速作用,如对称/非对称加密、数据压缩等。通过QAT,可大幅提升性能,节省CPU资源,优化存储和网络传输效率,适用于网络安全、虚拟机迁移、大数据处理等场景。
970 0
|
SQL 关系型数据库 Linux
【PostgreSQL】基于CentOS系统安装PostgreSQL数据库
【PostgreSQL】基于CentOS系统安装PostgreSQL数据库
2219 0
|
数据采集 算法 物联网
【算法精讲系列】阿里云百炼SFT微调实践分享
本内容为您提供了百炼平台SFT微调的实践案例,帮助您方便并快速借助模型微调定制化您自己的专属模型。
4028 14
|
存储 人工智能 分布式计算
【云栖2023】张治国:MaxCompute架构升级及开放性解读
本文根据2023云栖大会演讲实录整理而成,演讲信息如下 演讲人:张治国|阿里云智能计算平台研究员、阿里云MaxCompute负责人 演讲主题:MaxCompute架构升级及开放性解读 活动:2023云栖大会
61963 17
|
Kubernetes 关系型数据库 网络架构
ray集群部署vllm的折磨
概括如下: 在构建一个兼容多种LLM推理框架的平台时,开发者选择了Ray分布式框架,以解决资源管理和适配问题。然而,在尝试集成vllm时遇到挑战,因为vllm内部自管理Ray集群,与原有设计冲突。经过一系列尝试,包括调整资源分配、修改vllm源码和利用Ray部署的`placement_group_bundles`特性,最终实现了兼容,但依赖于非官方支持的解决方案。在面对vllm新版本和Ray部署的`reconfigure`方法问题时,又需权衡和调整实现方式。尽管面临困难,开发者认为使用Ray作为统一底层仍具有潜力。
|
Ubuntu Linux 开发工具
WSL2(3)安装Linux headers完美解决方案
WSL2(3)安装Linux headers完美解决方案
3070 0

热门文章

最新文章