Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过psycopg2对postgresql查询的Pickeling结果_Python_Sql_Postgresql_Pickle_Psycopg2 - Fatal编程技术网

Python 通过psycopg2对postgresql查询的Pickeling结果

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

我正在通过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")

# 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吗?(与数据库相同?)非常混乱的选择。