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

如何逐个打印PostgreSQL数据库多张表?cursor.fetchall()为何失效

问题原因

你连续执行三次cursor.execute()后只调用一次fetchall(),这会导致前两次查询的结果集被第三次执行覆盖,最终只能获取到Table_C的数据,自然没法逐个打印三张表的内容。

解决方法

方法一:每次查询后立即获取并打印结果

把fetchall()和打印操作放在每个execute()之后,就能依次拿到每张表的数据:

import psycopg2

conn = psycopg2.connect(
    database="Sample",
    user='postgres',
    password='password',
    host='localhost',
    port= '5432'
)

cursor = conn.cursor()

# 处理Table_A
cursor.execute("SELECT * FROM Table_A")
print("--- Table_A 数据 ---")
print(cursor.fetchall())

# 处理Table_B
cursor.execute("SELECT * FROM Table_B")
print("\n--- Table_B 数据 ---")
print(cursor.fetchall())

# 处理Table_C
cursor.execute("SELECT * FROM Table_C")
print("\n--- Table_C 数据 ---")
print(cursor.fetchall())

# 关闭资源
cursor.close()
conn.close()

方法二:先存储所有结果再统一处理

如果需要后续对三张表的数据做进一步操作,可以把每个查询结果存到变量中,之后再按需打印或处理:

import psycopg2

conn = psycopg2.connect(
    database="Sample",
    user='postgres',
    password='password',
    host='localhost',
    port= '5432'
)

cursor = conn.cursor()

# 存储各表数据
cursor.execute("SELECT * FROM Table_A")
table_a_data = cursor.fetchall()

cursor.execute("SELECT * FROM Table_B")
table_b_data = cursor.fetchall()

cursor.execute("SELECT * FROM Table_C")
table_c_data = cursor.fetchall()

# 逐个打印
print("--- Table_A 数据 ---")
print(table_a_data)
print("\n--- Table_B 数据 ---")
print(table_b_data)
print("\n--- Table_C 数据 ---")
print(table_c_data)

# 关闭资源
cursor.close()
conn.close()

注意:实际使用中记得操作完成后关闭游标和数据库连接,避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 13:42:27