You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python psycopg2在PostgreSQL中存储及读取tgz文件的技术咨询

我来帮你搞定这个问题——把tgz文件存进PostgreSQL,再用psycopg2读出来其实不难,下面是具体步骤和代码示例:

第一步:准备PostgreSQL表结构

首先得给你的tgz文件找个“容身之处”——在PostgreSQL里建一张带bytea类型字段的表,bytea就是专门用来存储二进制数据的:

CREATE TABLE tgz_files (
    id SERIAL PRIMARY KEY,
    filename VARCHAR(255) NOT NULL,
    file_data BYTEA NOT NULL,
    upload_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
第二步:用psycopg2写入tgz文件

接下来把本地的tgz文件塞进这张表里,直接以二进制模式读取文件,再通过参数化查询插入数据库(别直接拼SQL,避免注入风险):

import psycopg2

# 替换成你的数据库连接信息
conn = psycopg2.connect(
    dbname="your_db_name",
    user="your_username",
    password="your_password",
    host="your_host",
    port="your_port"
)
cur = conn.cursor()

# 读取目标tgz文件(必须用rb二进制模式)
tgz_file_path = "my_folder.tgz"
with open(tgz_file_path, "rb") as f:
    file_binary_data = f.read()

# 插入数据到表中
cur.execute(
    "INSERT INTO tgz_files (filename, file_data) VALUES (%s, %s)",
    (tgz_file_path, file_binary_data)
)

# 提交事务并关闭连接
conn.commit()
cur.close()
conn.close()

print(f"已成功将 {tgz_file_path} 存入数据库")
第三步:用psycopg2读取tgz文件

另一个Python进程读取时,思路反过来——从数据库取出bytea类型的二进制数据,再写入本地文件:

import psycopg2

# 同样替换成你的数据库连接信息
conn = psycopg2.connect(
    dbname="your_db_name",
    user="your_username",
    password="your_password",
    host="your_host",
    port="your_port"
)
cur = conn.cursor()

# 按文件名查询目标文件(也可以按id查询)
target_filename = "my_folder.tgz"
cur.execute(
    "SELECT file_data FROM tgz_files WHERE filename = %s",
    (target_filename,)
)
query_result = cur.fetchone()

if query_result:
    # 将二进制数据写入本地文件(用wb二进制模式)
    with open(f"downloaded_{target_filename}", "wb") as f:
        f.write(query_result[0])
    print(f"已成功读取并保存为 downloaded_{target_filename}")
else:
    print(f"数据库中未找到文件 {target_filename}")

# 关闭连接
cur.close()
conn.close()
几个实用小提醒
  • 如果你的tgz文件特别大(比如GB级),bytea可能不是最优选择,可以考虑PostgreSQL的大对象(Large Objects),不过中小文件用bytea完全够用。
  • 读写文件时一定要用rb和wb模式,绝对不能用文本模式,不然会破坏二进制数据的完整性。
  • 实际项目里最好给数据库操作加上try-except块,处理连接异常、查询失败等情况,避免资源泄漏。

内容的提问来源于stack exchange,提问作者ahmed meraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 09:39:09