连接所有 PostgreSQL 表并创建 Python 字典

2024-05-22

我需要加入allPostgreSQL 表并将它们转换为 Python 字典。数据库中有72张表。总列数大于1600.

我编写了一个简单的 Python 脚本,该脚本连接多个表,但由于以下原因无法连接所有表内存错误 https://gist.github.com/SergeyBondarenko/a753689a86b9af209e6dd6ef2c2f7eef。脚本执行期间所有内存都被占用。我在新的虚拟服务器上运行脚本128GBRAM 和 8 个 CPU。它在 lambda 函数执行期间失败。

如何改进以下代码的执行能力all表连接?

from sqlalchemy import create_engine
import pandas as pd

auth = 'user:pass'
engine = create_engine('postgresql://' + auth + '@host.com:5432/db')

sql_tables = ['table0', 'table1', 'table3', ..., 'table72']        
df_arr = []
[df_arr.append(pd.read_sql_query('select * from "' + table + '"', con=engine)) for table in sql_tables]

df_join = reduce(lambda left, right: pd.merge(left, right, how='outer', on=['USER_ID']), df_arr)
raw_dict = pd.DataFrame.to_dict(df_join.where((pd.notnull(df_join)), 'no_data'))

print(df_join)
print(raw_dict)
print(len(df_arr))

可以用吗Pandas http://pandas.pydata.org/pandas-docs/stable/为了我的目的?有更好的解决方案吗?

最终目标是非规范化 https://www.elastic.co/guide/en/elasticsearch/guide/current/denormalization.html能够将其索引到的数据库数据弹性搜索 https://www.elastic.co作为文档,每个用户一份文档。


为什么不创建一个 postgres 函数而不是脚本呢?

以下是一些可以帮助您避免内存错误的建议:

  • 您可以使用WITH可以更好地利用你的记忆的子句。
  • 您可以创建一些物理表来存储信息 数据库的不同组的表。这些物理表将避免使用大量内存。之后,您所要做的就是仅连接那些物理表。您可以为其创建一个函数。
  • 您可以通过对所需的表进行非规范化来创建数据仓库。
  • 最后但并非最不重要的一点:确保您正在使用Indexes适当地。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接所有 PostgreSQL 表并创建 Python 字典 的相关文章

随机推荐

  • 用于嵌入式系统的简约人类可读序列化格式解析器

    By 人类可读的序列化格式 I mean YAML JSON INI或喜欢 请注意 XML对于我的目的来说太冗长而且太不方便 所以让我们把它作为最后的手段 格式应将数据存储为 命名键 值 配对并允许嵌套和数组 不过 缺少数组并不重要 此外
  • ASP.NET 中的回发问题

    我有一个 asp net 标签控件 其 Visible 属性设置为 false 在后面的代码中 我根据用户是否已登录将其可见性设置为 true false 一个奇怪的行为是 在回发时 代码隐藏执行并将标签可见性的值设置为任意值 然后标记执行
  • 用 C/C++ 编写的通用代码补全框架

    有没有用 C C C 11 编写的框架用于编写代码补全工具 或者也许有一些库允许 Java 或 C 的代码完成 也是用 C 编写的 我正在用 C 编写我的自定义 IDE 用于 Java 而不仅仅是 Java 开发 我想以最好的方式为其添加代
  • Pytorch RuntimeError:“host_softmax”未针对“torch.cuda.LongTensor”实现

    我正在使用 pytorch 来训练模型 但是在计算交叉熵损失时我遇到了运行时错误 Traceback most recent call last File deparser py line 402 in
  • 如何从 Typescript 中导入的文件推断类型

    我有一个棘手的打字稿问题 我似乎无法解决 我想根据泛型推断值 然而 问题是推断的类型需要来自导入的文件 用一个例子来解释 这是我的通用函数 import DocumentNode print from graphql type Graphq
  • Sinatra 在《Passenger》上的第一次尝试总是失败

    我有一个小型 Sinatra 应用程序 正在使用 Passenger 在共享托管帐户上运行 但是 在一段时间后第一次访问该应用程序时 我收到一个 Passenger 错误页面 指出该应用程序无法启动 通常是因为找不到 Sinatra 我假设
  • 如何在 Nodejs - mongodb 搜索中对结果进行排序,但是,通过调用动态方法

    我正在 Nodejs 中开发一个 Web 应用程序 通过 mongo 本机连接器连接到 mongodb 在我的一个 js 文件中 我有一个通用方法来调用 find 或 findOne 操作以从 mongodb 集合中检索我需要的任何内容 如
  • 如何根据D3中的数据创建元素?

    看着sample https github com mbostock d3 wiki Selections wiki data d3 select body selectAll div data 4 8 15 16 23 42 enter
  • 错误:标准包中非标准导入“gopkg.in/yaml.v2”

    我正在尝试从以下位置导入 go yamlhttps github com go yaml yaml https github com go yaml yaml 并且我发现了一个 Google 没有提供帮助的错误 I ran go get g
  • using 块会关闭数据库连接吗?

    using DbConnection conn new DbConnection do stuff with database 会不会using块调用conn Close 是的 它会 实施DbConnection Dispose calls
  • PowerShell 参数 - “术语‘param’未被识别为 cmdlet 的名称”

    考虑 notepad Starts Notepad Get Process notepad Finds the processes named notepad param Parameter Mandatory true string Pr
  • 在 C++ linux 中将 STRINGS 写入串口

    我知道这个问题遍布互联网 但仍然没有任何东西能让我完全解决这个问题 我想用 C linux 将数据写入 Propeller 板的串行端口 从控制台获取输入时程序运行良好 但是当我向它写入字符串时总是返回 ERROR Invalid comm
  • 如何在SAS中对逻辑回归进行似然比检验?

    我想使用 SAS 在逻辑回归中执行标准似然比检验 我将拥有一个完整的逻辑模型 其中包含所有变量 名为 A 和一个嵌套逻辑模型 B 通过从 A 中删除一个变量而派生 如果我想测试该退出变量是否显着 我将对模型 A 和 B 执行似然比测试 是否
  • 使用 pgAdmin 调试 PostgreSQL 函数

    I refer this http www postgresonline com journal archives 214 Using PgAdmin PLPgSQL Debugger html启用 PostgreSQL 服务器中的调试器
  • 如何更改Firebase默认存储桶?

    我有2个存储桶 一个来自Google云存储 一个由firebase创建 firebase创建的存储桶是默认的 我想更改默认存储桶并删除firebase创建的存储桶 您无法从 Firebase 控制台执行此操作 您需要转到 Google Cl
  • xmlns 元素的顺序重要吗

    我不知道如何在 google 中搜索此内容 但是 xmlns 元素的问题在 XML 文件中重要吗 我正在 ASP NET VB 中使用 XMLWriter 创建一个 XML 文件 并且尝试匹配我提供的示例
  • 无法使用 Keras 中的 multi_gpu_model 后的 model.save 保存模型

    升级到 Keras 2 0 9 后 我一直在使用multi gpu model实用程序 但我无法使用保存我的模型或最佳权重 model save path 我得到的错误是 类型错误 无法pickle模块对象 我怀疑访问模型对象时存在一些问题
  • PHP_CodeSniffer规则文档[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在哪里可以找到有关的文档PHP CodeSniffer http pear php net packa
  • 在 Java 中将日期从 UTC 转换为 PST

    我需要将日期从 Google App Engine 本地服务器时区转换为 Java 中的太平洋时间 我尝试使用 Calendar calstart Calendar getInstance calstart setTimeZone Time
  • 连接所有 PostgreSQL 表并创建 Python 字典

    我需要加入allPostgreSQL 表并将它们转换为 Python 字典 数据库中有72张表 总列数大于1600 我编写了一个简单的 Python 脚本 该脚本连接多个表 但由于以下原因无法连接所有表内存错误 https gist git