python访问pg数据库,并将查询结果保存到文件(txt,word,Excel)_python pg


一、安装pg数据库驱动程序

首先,你需要确定你要连接的数据库类型,并安装相应的数据库驱动程序。常见的数据库驱动程序包括psycopg2(PostgreSQL),mysql-connector-python(MySQL),pyodbc(Microsoft SQL Server),cx_Oracle(Oracle)等。你可以使用Python的包管理器(如pip)来安装这些驱动程序。

pip install psycopg2

二、使用步骤

1.引入库

代码如下(示例):

import psycopg2  # 导入psycopg2驱动程序

2.连接pg数据库,执行操作语句

使用数据库驱动程序提供的函数来建立与数据库的连接。你需要提供数据库的连接参数,例如主机名、端口号、用户名、密码等。
具体的连接参数取决于你要连接的数据库类型
这里我读取的是单独建的一个字典文件config中的配置
连接pg数据库,执行查询代码如下:

def pg\_sql(sql):
    result = []
    conn = None
    cur = None
    try:
        # 连接到数据库
        conn = psycopg2.connect(
            host=config.DB["host"],
            port=config.DB["port"],
            database=config.DB["database"],
            user=config.DB["user"],
            password=config.DB["password"]
        )

执行SQL查询:一旦连接成功,你可以使用conn对象来执行SQL查询并获取结果。

        cur = conn.cursor()  # 创建游标
        cur.execute(sql)  # 执行语句
        rows = cur.fetchall()  # 处理查询结果
        for row in rows:
            result.append(row[0])  # 这里的[0]表示只保存了查询出来的第一列数据
    except psycopg2.Error as err:
        print('Error msg: ' + str(err))
    # finally 是一个在 try-except 语句块中的可选部分用于定义无论是否发生异常都会被执行的代码块
    finally:  
        if cur is not None:
            cur.close()  # 关闭游标
        if conn is not None:
            conn.close()  # 关闭数据库连接
    return result

3.将查询结果保存到文件中

results的值为sql的查询结果
name的值为config.HT[“name”]

curPath获取当前文件的绝对路径

file 是一个内置变量,表示当前文件的路径。os.path.dirname(file) 可以获取当前文件所在的目录路径,而 os.path.abspath() 则将相对路径转换为绝对路径。

rootPath为获取当前文件所在目录的父级目录路径

os.path.split() 函数将路径分割为目录和文件名,返回一个元组。通过取元组中的第一个元素,即可获取当前文件所在目录的父级目录路径。

curPath = os.path.abspath(os.path.dirname(__file__))  # 此处用绝对路径
rootPath = os.path.split(curPath)[0]

rootPath为项目根目录
文件保存到项目根目录下的docs文件夹下,名称为***_station.txt

保存为txt文件
def get\_result(results, name):
    filename = f"{rootPath}/docs/{name}\_station.txt"
    with open(filename, 'w') as file:
        for result in results:
            file.write(str(result) + '\n')
    return results

保存为Excel 文件
import openpyxl

def get\_result(results, name):
    filename = f"{rootPath}/docs/{name}\_station.xlsx"

    # 创建一个新的工作簿
    workbook = openpyxl.Workbook()
    sheet = workbook.active

    # 将结果写入工作表
    for row, result in enumerate(results, start=1):
        sheet.cell(row=row, column=1, value=result)


### 最后

> **🍅 硬核资料**:关注即可领取PPT模板、简历模板、行业经典书籍PDF。  
> **🍅 技术互助**:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。  
> **🍅 面试题库**:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。  
> **🍅 知识体系**:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值