Python 用pandas连接Postgresql库

pandas确实蛮强的,记录使用的代码

python 复制代码
from sqlalchemy import create_engine
import pandas as pd
import os

# 从环境变量中读取数据库连接信息
user = os.getenv('DB_USER', 'xxx')              # 数据库用户名
password = os.getenv('DB_PASSWORD', 'xxx')      # 数据库密码
host = os.getenv('DB_HOST', '192.168.0.1')      # 数据库主机地址
port = os.getenv('DB_PORT', '5432')             # 数据库端口
dbname = os.getenv('DB_NAME', 'xxx')            # 数据库名称

# 创建数据库引擎
# 这个引擎将用于与 PostgreSQL 数据库建立连接
engine = create_engine(f'postgresql://{user}:{password}@{host}:{port}/{dbname}')

# 插入数据到数据库
def insert_data(df):
    """
    将 DataFrame 插入到数据库表中。

    参数:
    df (pd.DataFrame): 要插入的 DataFrame 数据
    """
    df.to_sql(name='employees', 
              schema='xxx',        # 库名
              con=engine, 
              if_exists='append',  # 追加数据到现有表
              index=False)         # 不写入 DataFrame 的索引列

# 查询数据库中的数据
def query_data():
    """
    从数据库中查询数据并返回 DataFrame。

    返回:
    pd.DataFrame: 查询结果 DataFrame
    """
    query = "SELECT * FROM xxx.employees"
    return pd.read_sql_query(query, con=engine)

# 主程序
if __name__ == '__main__':
    # 创建一个 DataFrame,包含要插入的新数据
    df = pd.DataFrame({
        'id': [14, 25, 36],                 # ID 列
        'name': ['Alice', 'Bob', 'Charlie'], # 名字列
        'age': [25, 30, 35],                # 年龄列
        'department': ['HR', 'Engineering', 'Marketing']  # 部门列
    })

    # 将数据插入到数据库中
    insert_data(df)
    
    # 查询并打印数据库中的数据
    df_result = query_data()
    print(df_result)
相关推荐
love530love8 分钟前
【保姆级教程】阿里 Wan2.1-T2V-14B 模型本地部署全流程:从环境配置到视频生成(附避坑指南)
人工智能·windows·python·开源·大模型·github·音视频
He19550139 分钟前
Go初级之十:错误处理与程序健壮性
开发语言·python·golang
和鲸社区1 小时前
《斯坦福CS336》作业1开源,从0手搓大模型|代码复现+免环境配置
人工智能·python·深度学习·计算机视觉·语言模型·自然语言处理·nlp
豌豆花下猫2 小时前
Python 潮流周刊#118:Python 异步为何不够流行?(摘要)
后端·python·ai
THMAIL2 小时前
深度学习从入门到精通 - LSTM与GRU深度剖析:破解长序列记忆遗忘困境
人工智能·python·深度学习·算法·机器学习·逻辑回归·lstm
wheeldown2 小时前
【数学建模】数据预处理入门:从理论到动手操作
python·数学建模·matlab·python3.11
多打代码3 小时前
2025.09.05 用队列实现栈 & 有效的括号 & 删除字符串中的所有相邻重复项
python·算法
@CLoudbays_Martin113 小时前
为什么动态视频业务内容不可以被CDN静态缓存?
java·运维·服务器·javascript·网络·python·php
程序猿炎义3 小时前
【NVIDIA AIQ】自定义函数实践
人工智能·python·学习
THMAIL4 小时前
深度学习从入门到精通 - BERT与预训练模型:NLP领域的核弹级技术详解
人工智能·python·深度学习·自然语言处理·性能优化·bert