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

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

时间:2024-05-14 19:20:55浏览次数:13  
标签:并打印 PostgreSQL 查询 cursor records connection print query

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

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

在开始使用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方法中传入一个包含实际参数值的元组。这样做既安全又高效。

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

标签:并打印,PostgreSQL,查询,cursor,records,connection,print,query
From: https://www.cnblogs.com/bigleft/p/18192042

相关文章

  • 子查询
    当行操作符<只能搭配标量子查询having和where后边多行子查询......
  • SQL 复杂查询更新插入
    通过现有数据快速插入构造新数据1INSERTINTO`merge`.`ods_binlog_traffic_vehicle_tracks`(2`id`,3`vehicle_no`,4.5.6.7`gps_datetime`,8.9.10.11`update_time`,12.13.14.15)......
  • 数据库升级PostgreSql+Garnet
    目录前言PostgreSql安装测试额外Nuget安装Person.cs模拟运行Navicate连postgresql解决方案Garnet为什么要选择Garnet而不是RedisRedis不再开源Windows版的Redis是由微软维护的WindowsRedis版本老旧,后续可能不再更新Garnet性能强于Redis安装测试安装可视化工具C#代码连接测试总结......
  • Windows+Pycharm+Flask+Vue+Element-Plus 前后端分离实现分写查询功能
    准备工作安装nodejshttps://nodejs.cn/download/验证是否安装成功安装Python不赘述,3.7+Pycharm创建Flask项目D:\pythonProject\myvueWindowsPowerShell进入到CMD指令界面,cdD:\pythonProject\myvue进入到myvue目录,创建vue项目文件client,然后cd到client目录,安装vue......
  • 连接查询(多表查询)
    连接两个条件where...and...非等值连接自连接......
  • PostgreSQL 中切换模式(schema)
    要在PostgreSQL中切换模式(schema),您可以使用SETsearch_path命令。模式是PostgreSQL数据库中用于组织和分隔对象的命名空间。以下是如何在psql命令行客户端中切换模式的步骤:打开psql客户端并连接到您的数据库。使用以下命令查看当前搜索路径(searchpath):sql复制代......
  • JDBC连接openGauss6.0和PostgreSQL16.2性能对比
    本文分享自华为云社区《JDBC连接openGauss6.0和PostgreSQL16.2性能对比》,作者:Gauss松鼠会小助手。PostgreSQLvsopenGauss01前置准备安装JDK:详细安装步骤请问度娘,输入能正常返回即已安装[root@db06~]#java-versionopenjdkversion"1.8.0_262"OpenJDKRuntimeEnvir......
  • Python执行PG数据库查询语句:以Markdown格式打印查询结果
    哈喽,大家好,我是木头左!1.准备工作在开始之前,需要确保已经安装了psycopg2和pandas这两个Python库。psycopg2是Python的一个PostgreSQL数据库适配器,用于连接和操作PostgreSQL数据库。而pandas则是一个强大的数据处理库,将用它来处理查询结果并以Markdown格式打印。pipinstallp......
  • postgresql(14-15)升级(源库需要停机)
    环境:OS:Centos7旧版本:pg14新版本:pg15已经安装的插件mysql_fdw_14.x86_64postgis33_14.x86_64 1.查看当前的版本[root@dsc1~]#psql-hlocalhost-Upostgres-p5432psql(14.11)Type"help"forhelp.postgres=#selectversion();......
  • Java身份证识别接口集成开发示例,身份证查询接口
    人类是有情感的,人们所接触到的各种事物和信息都会被身体相应器官所接收,然后通过神经元传入大脑继而被识别,然后大脑便会产生对该事物的认知和情绪。人们大多喜欢热情、有趣的事物,对冷冰冰、枯燥、无趣的APP基本是提不起兴趣的。一个好的APP是可以打动人心、能够传递情感的,进而......