【问题标题】:Python: Saving dataset from Postgres for last loadingPython:从 Postgres 保存数据集以供上次加载
【发布时间】:2019-12-28 00:46:37
【问题描述】:

我将使用存储在具有只读访问权限的 PostgreSQL 服务器中的非常大的时空数据集。目标是将这些数据集加载到 Python 环境中,进行所有处理并创建某种学习模型。

每次我想要工作时,将这些数据集从 postgres 加载到 python 中并不是一个好主意。

我想知道是否有办法让 Postgres 以将来可以支持更快加载的格式(例如 .pkl 或 .hdf)将这些数据集转储到磁盘。我真的不认为 \COPY 到 csv 会是一个选择。

【问题讨论】:

    标签: python postgresql


    【解决方案1】:

    如果您从 PostgreSQL 开始,那么 COPY 或 \copy 是您唯一的选择。你还没有说为什么那不可行。

    我假设数据库正在发生变化,并且您希望将最近的数据提取到您的 Python 程序中。如果数据库是静态的,那么你可能

    • 使用 COPY 或 \copy 一次
    • 将结果读入 Python
    • 将数据保存为另一种格式

    解决此问题的另一种方法是使用数据库连接器从 Python 中提取数据。 This solution 特定于 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'))
    

    【讨论】:

      猜你喜欢
      • 2021-10-19
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多