首页 > 数据库 >Python查询PostgreSQL数据库

Python查询PostgreSQL数据库

时间:2024-05-16 19:18:39浏览次数:16  
标签:PostgreSQL Python psycopg2 数据库 cursor connection query data

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

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还支持存储过程和触发器,这允许在数据库层面执行复杂的逻辑。

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

标签:PostgreSQL,Python,psycopg2,数据库,cursor,connection,query,data
From: https://www.cnblogs.com/bigleft/p/18196582

相关文章

  • python 面向对象(进阶篇)
    python面向对象(进阶篇) 上一篇《Python面向对象(初级篇)》文章介绍了面向对象基本知识:面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用类是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中)对象,根据模板创建的实例(即......
  • 利用python脚本批量读取当前目录下所有excle表格中特定的单元格内容
    利用python脚本批量读取当前目录下所有excle表格中特定的单元格内容importosfromopenpyxlimportload_workbook#设置要读取的单元格地址cell_address='N18'#遍历当前目录下的所有文件forfilenameinos.listdir('.'):iffilename.endswith(......
  • 利用python脚本批量替换当前目录下所有excle表格中特定的单元格内容
    利用python脚本批量替换当前目录下所有excle表格中特定的单元格内容#导入os模块,用于文件和目录操作importos#导入openpyxl库中的load_workbook函数,用于加载Excel文件fromopenpyxlimportload_workbook#定义一个函数replace_cell_content,用于替换Exc......
  • python打包在32位无法运行问题
    真不想吐槽现在的技术越高级越烂的一批尤其是开发工具win1064位python64位开发pyinsataller打包后不能在32位上运行别折腾重新安装python32位测试安装python3.12.232位竟然不能安装pandas(见鬼去吧)重新安装python3.8.10提示不能用在xp上,也可以接受了.再安装依赖包,没......
  • docker构建python镜像
    执行步骤如下:1、使用Dockerfile创建有 接口自动化框架执行环境 的python镜像2、根据python镜像,编写shell脚本创建容器3、拉取git(接口自动化框架)上的代码,使用python执行接口自动化框架4、执行完成之后自动销毁容器使用Dockfile创建python镜像前置:需创建目录py38dockerfi......
  • Python视频混剪代码
    公司需要剪辑,近期混剪特别多,所以开发了这个,有兴趣的研究研究,如果有好的代码补充优化或者分享麻烦艾特我`importosimporthashlibimportthreadingimportrandomimportthreadingimportmoviepy.editorasmpyfrommoviepy.editorimportAudioFileClip,VideoFileClip,co......
  • DataX将MySql数据库数据同步到Oracle数据库
    1.下载DataX并解压(本地环境安装有python)DataX/userGuid.mdatmaster·alibaba/DataX(github.com) job文件夹下存放数据同步的json脚本{"job":{"setting":{"speed":{"channel":1}......
  • 国产数据库obase
    ##sample1文章1  OceanBase慢查询排查思路  https://open.oceanbase.com/blog/4030499840?_gl=1*1muepo8*_ga*MTg4MDgzMzI3Mi4xNzE1NDE3MjEw*_ga_T35KTM57DZ*MTcxNTg0MDQ3OS4xMi4xLjE3MTU4NDU2NTkuNjAuMC4w  本文汇总了项目实践中前辈的经验和笔者的理解,旨在帮助初......
  • lightdb数据库超时相关控制参数
    在业务开发中,通常因为代码不规范、中间件缺陷、DBA误提交批量SQL等原因,会导致服务端连接一直存在、但是实际上并未在执行的情况,从而导致数据库连接泄露。为了防止这种异常情况积压,lightdb中包含了多个参数用于控制超时相关的行为:lock_timeout:控制多久拿不到锁就自动超时并回......
  • python计算时间
       importtimeimportdatetimedefcompare_time(startTime,endTime):#now=datetime.datetime.now()d_start=datetime.datetime.strptime(startTime,'%Y-%m-%d%H:%M:%S')d_end=datetime.datetime.strptime(endTime,'%Y-%m-%......