Python 通过psycopg2对postgresql查询的Pickeling结果
我正在通过psycopg2库查询PostgreSQL数据库。以这种方式查询的响应是。由于查询的大小,我试图避免重新查询它,而是将查询结果保存为一个 不幸的是,当我尝试执行代码时:Python 通过psycopg2对postgresql查询的Pickeling结果,python,sql,postgresql,pickle,psycopg2,Python,Sql,Postgresql,Pickle,Psycopg2,我正在通过psycopg2库查询PostgreSQL数据库。以这种方式查询的响应是。由于查询的大小,我试图避免重新查询它,而是将查询结果保存为一个 不幸的是,当我尝试执行代码时: import psycopg2 import pickle # Connect to an existing database conn = psycopg2.connect(dbname="DB", user="my_user", password="****", host="12.34.56.78") # Op
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查询结果以备将来使用的直接方法是什么?
注意:我没有义务使用泡菜。对我来说,这似乎是一个最佳的解决方案。我认为您需要
cur.fetchall()
之后的cur.execute()
及其变体。
更多细节
例如:
import numpy as np
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[...];")
cur_out = np.asarray(cur.fetchall())
# Attempt to pickle the output
# Attempt to pickle the output
pickle_out = open("output.pickle","wb")
pickle.dump(cur_out, pickle_out)
pickle_out.close()
你的桌子真的叫DB吗?(与数据库相同?)非常混乱的选择。