Python执行PostgreSQL数据库查询语句,并打印查询结果

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 本文介绍了如何使用Python连接和查询PostgreSQL数据库。首先,确保安装了`psycopg2`库,然后创建数据库连接函数。接着,展示如何编写SQL查询并执行,例如从`employees`表中选取所有记录。此外,还讨论了处理查询结果、格式化输出和异常处理的方法。最后,提到了参数化查询和事务处理以增强安全性及确保数据一致性。

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

准备工作:安装必要库和设置数据库连接

在开始使用Python执行PostgreSQL数据库查询之前,需要确保已经安装了psycopg2这个库,它是Python语言中用来操作PostgreSQL数据库的一个适配器。可以通过以下命令进行安装:

pip install psycopg2-binary

安装完成后,需要创建一个连接到PostgreSQL数据库的函数,如下所示:

import psycopg2
from psycopg2 import OperationalError

def create_conn():
    conn = None
    try:
        conn = psycopg2.connect(
            database="your_database",
            user="your_username",
            password="your_password",
            host="localhost",
            port="5432"
        )
        print("Connection to PostgreSQL DB successful")
    except OperationalError as e:
        print(f"The error '{e}' occurred")
    return conn

请记得将上述代码中的your_database, your_usernameyour_password 替换为你自己的数据库信息。

查询数据:编写和执行SQL语句

一旦建立了与数据库的连接,下一步就是编写SQL查询语句,并使用Python来执行这些语句。以下是一个简单的例子,展示了如何从名为employees的表中选择所有记录:

def execute_query(connection, query):
    cursor = connection.cursor()
    postgreSQL_select_Query = query
    cursor.execute(postgreSQL_select_Query)
    records = cursor.fetchall()
    return records

connection = create_conn()
query = "SELECT * FROM employees;"
records = execute_query(connection, query)
for row in records:
    print("ID = ", row[0], )
    print("NAME = ", row[1])
    print("AGE = ", row[2], "
")

在这个例子中,execute_query函数接收一个数据库连接对象和一个SQL查询字符串作为参数,然后它创建了一个游标对象来执行查询。fetchall()方法是用来获取所有的查询结果。

处理查询结果:格式化输出和异常处理

当得到查询结果后,通常需要对这些结果进行一些处理,比如格式化输出到控制台或者文件,甚至可能是进一步的数据分析。同时,也需要考虑到异常处理,以确保程序的健壮性。

def format_and_print_results(records):
    if records:
        print("Query Results:")
        for record in records:
            print(f"ID: {record[0]}, Name: {record[1]}, Age: {record[2]}")
    else:
        print("No records found.")

try:
    records = execute_query(connection, query)
    format_and_print_results(records)
except (Exception, psycopg2.DatabaseError) as error:
    print(error)
finally:
    if connection is not None:
        connection.close()
        print("PostgreSQL connection is closed")

在这部分代码中,定义了一个format_and_print_results函数来美化输出的结果。同时,用try...except...finally结构来确保即使发生错误,数据库连接也能被正确关闭。

高级功能:参数化查询和事务处理

为了提高性能和安全性,可以使用参数化查询来避免SQL注入攻击,并使用事务来确保数据的一致性。

def parameterized_query(connection, query, params):
    cursor = connection.cursor()
    cursor.execute(query, params)
    records = cursor.fetchall()
    return records

try:
    connection = create_conn()
    with connection.cursor() as cursor:
        query = "INSERT INTO employees (id, name, age) VALUES (%s, %s, %s)"
        params = (1, 'John', 30)
        cursor.execute(query, params)
        connection.commit()
        print("Record inserted successfully into employees table")
except (Exception, psycopg2.DatabaseError) as error:
    print(error)
finally:
    if connection is not None:
        connection.close()
        print("PostgreSQL connection is closed")

在这个例子中,使用了占位符%s来代替实际的参数值,然后在execute方法中传入一个包含实际参数值的元组。这样做既安全又高效。

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

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
1天前
|
SQL 存储 关系型数据库
关系型数据库中的PostgreSQL
【6月更文挑战第11天】
32 3
|
5天前
|
SQL 安全 API
Python基础教程(第3版)中文版 第13章 数据库支持(笔记)
Python基础教程(第3版)中文版 第13章 数据库支持(笔记)
|
6天前
|
JavaScript 关系型数据库 MySQL
Python实战:从猎聘网获取职位信息并存入数据库
Python实战:从猎聘网获取职位信息并存入数据库
|
6天前
|
SQL 存储 安全
SQL入门与进阶:数据库查询与管理的实用指南
一、引言 在数字化时代,数据库已经成为各行各业存储、管理和分析数据的关键基础设施
|
7天前
|
关系型数据库 数据库 PostgreSQL
PostgreSQL数据库的字符串拼接语法使用说明
【6月更文挑战第11天】PostgreSQL数据库的字符串拼接语法使用说明
25 1
|
7天前
|
SQL 关系型数据库 MySQL
Python 操作 MySQL 数据库
Python 操作 MySQL 数据库
|
8天前
|
SQL 安全 数据库
SQL实践指南:从基础到进阶的数据库查询与管理
一、引言 在数据驱动的时代,数据库已成为各行各业不可或缺的一部分
|
8天前
|
SQL 安全 数据库
掌握SQL:数据库操作与查询的精髓
一、引言 在数据驱动的时代,数据库是任何组织或项目不可或缺的一部分
|
8天前
|
SQL 存储 数据库
掌握SQL:数据库查询与管理的关键技能
一、引言 在信息化快速发展的今天,数据库已成为存储、处理和查询数据的重要工具
|
8天前
|
SQL 存储 安全
深入SQL:掌握数据库操作与查询的艺术
一、引言 在信息化高度发展的今天,数据库已成为企业、组织甚至个人管理数据的核心工具

热门文章

最新文章