【发布时间】:2020-02-19 10:59:35
【问题描述】:
我正在通过 psycopg2 库查询 PostgreSQL 数据库。以这种方式查询的响应是cursor object file。由于查询的大小,我试图避免重新查询它,而是将查询结果保存为pickle。
不幸的是,当我尝试为此执行代码时:
import psycopg2
import pickle
# Connect to an existing database
conn = psycopg2.connect(dbname="DB", user="my_user", password="****", host="12.34.56.78")
# Open a cursor to perform database operations
cur = conn.cursor()
# Query the database and obtain data as Python objects
cur.execute("SELECT * FROM my_table[...];")
# Attempt to pickle the output
pickle_out = open("output.pickle","wb")
pickle.dump(cur, pickle_out)
pickle_out.close()
# Close communication with the database
cur.close()
conn.close()
出现错误消息:
TypeError: can't pickle psycopg2.extensions.cursor objects
什么是通过 python 保存 SQL 查询结果以供将来使用的直接方法?
注意:我没有义务使用泡菜。这对我来说似乎是一个最佳解决方案。
【问题讨论】:
-
你的表真的叫DB吗? (和数据库一样?)非常混乱的选择。
标签: python sql postgresql pickle psycopg2