python-3.x - 如何将大型数据库中的数据加载到 pandas 中?

标签 python-3.x postgresql pandas memory

我有一个postgres数据库,其中包含时间序列数据。数据库的大小约为1 GB。当前读取数据,这就是我所做的

import psycopg2
import pandas as pd
import pandas.io.sql as psql

conn = psycopg2.connect(database="metrics", user="*******", password="*******", host="localhost", port="5432")
cur = conn.cursor()
df = psql.read_sql("Select * from timeseries", conn)
print(df)

但这会将整个数据加载到内存中。现在我知道可以将数据库转储到 csv 文件,然后可以按此处建议的方式读取 csv 文件的 block How to read a 6 GB csv file with pandas

但对我来说这不是一个选择,因为数据库将不断变化,我需要即时读取它。是否有任何技术可以分块读取数据库内容或使用任何第三方库?

最佳答案

pd.read_sql()还有参数chunksize,因此您可以从 SQL 表/查询中以 block 的形式读取数据:

for df in pd.read_sql("Select * from timeseries", conn, chunksize=10**4):
    # process `df` chunk here...

关于python-3.x - 如何将大型数据库中的数据加载到 pandas 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50174683/

相关文章:

python - 具有可迭代的字典字典到 pandas 具有按可迭代索引的多重索引的数据框

mysql - "AttributeError: ' str ' object has no attribute ' 光标"

python-3.x - 凯拉斯 : Attention Mechanism For Text Summarization

python - Python 3 中的除法给出与 Python 2 中不同的结果

python - sqlalchemy.dialects.mysql 中的 INTEGER 在其 __init__ 方法中不带参数?

java - 如何从表中删除树节点及其子记录(无级联删除)?

sql - 一个值出现的次数(sql)

sql - 一组日期的标准差

python - 使用 numpy 读取 csv 文件的主要内存问题

Python使用pandas每三行转列