我需要连接 所有 PostgreSQL 表并将它们转换为 Python 字典。数据库中有 72 张表,总列数超过 1600。
我编写了一个简单的 Python 脚本来连接几个表格,但由于 内存错误,无法连接所有表格。在脚本执行期间,所有内存都被占用。我在一台新的虚拟服务器上运行此脚本,该服务器配备 128GB RAM 和 8 个 CPU。在 lambda 函数执行期间失败了。
如何改进以下代码以执行 所有 表格连接?
我编写了一个简单的 Python 脚本来连接几个表格,但由于 内存错误,无法连接所有表格。在脚本执行期间,所有内存都被占用。我在一台新的虚拟服务器上运行此脚本,该服务器配备 128GB RAM 和 8 个 CPU。在 lambda 函数执行期间失败了。
如何改进以下代码以执行 所有 表格连接?
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可以吗?还有更好的解决方案吗?
最终目标是将数据库数据去规范化以便将其索引为Elasticsearch文档,每个用户一个文档。