我需要加入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作为文档,每个用户一份文档。