python - Python:从 Postgres 保存数据集以供上次加载
问题描述
我将使用存储在具有只读访问权限的 PostgreSQL 服务器中的非常大的时空数据集。目标是将这些数据集加载到 Python 环境中,进行所有处理并创建某种学习模型。
每次我想要工作时,将这些数据集从 postgres 加载到 python 中并不是一个好主意。
我想知道是否有办法让 Postgres 将这些数据集以一种格式(例如.pkl
或.hdf
)转储到磁盘,以支持未来更快的加载。我真的不认为\COPY
这csv
是一个选择。
解决方案
如果您从 PostgreSQL 出发,那么 COPY 或 \copy 是您唯一的选择。你还没有说为什么那不可行。
我假设数据库正在发生变化,并且您希望将最近的数据提取到您的 Python 程序中。如果数据库是静态的,那么您可能
- 使用 COPY 或 \copy 一次
- 将结果读入 Python
- 将数据保存为另一种格式
- hdf 使用 h5py
- 使用numpy.save 的numpy 格式
另一种解决问题的方法是使用数据库连接器从 Python 中提取数据。此解决方案特定于 MySQL,但应与 PostgreSQL 数据连接器一起使用。这是适用于 PostgreSQL 的代码:
import psycopg2
import numpy
conn = psycopg2.connect(host='localhost', user='bob', passwd='mypasswd', db='bigdb')
curs = conn.cursor()
numrows = curs.execute("SELECT id, rating FROM video")
#dtype='i4,i4' means two columns, both 4 byte (32 bit) integers
# you will have to adapt to your data type and data structure
A = numpy.fromiter(curs.fetchall(), count=numrows, dtype=('i4,i4'))
推荐阅读
- redux - 使用导出默认存储时,Redux 存储没有有效的减速器
- node.js - Ionic npm error karma 和 eslint 所有版本,为什么?
- excel - 在现有工作表上创建数据透视表的简单代码,数据有 3 列间隙
- file - 我在一个名为 (builtins.pyi) 的陌生文件中遇到了一些随机语法错误
- spring-boot - 如何在 Spring Boot REST 中使用 @Embedded 和 List
- javascript - 为什么 React 被称为库而不是 SDK?
- python - 我想用字典检查相同键的列表,如果我有相同的键来合并字典
- android - 鉴于客户端错误,Volley 在 Android Studio 上获取请求
- mysql - SQL - 查找树结构的父级
- c# - 在 JSON 中取某个字符串并放入 RichTextBox