我现在被一个问题卡住了,希望有人能给我点化。
我的部门有一些panda脚本,用于从CSV获取数据,进行一些小的转换,然后使用SQL Alchemy ORM(dataframe.to_sql)将其写入我们的SQL Server数据库。此连接使用fast_executemany参数设置。处理后的 Dataframe 只有大约50 K行和大约20列。写入SQL数据库大约需要2/3分钟。
我最近开始探索将这个脚本的Pandas部分替换为Polars,以匹配我们的其他一些过程。从Pandas切换到Polars后,转换时间大大缩短,在Polars中完成转换后,我使用www.example.com _pandas()将输出帧转换为PandasDFPolarsFrame.to。
当我尝试将这个转换后的Polars帧写入SQL服务器时,我的问题出现了,使用的方法与Pandas Dataframe 完全相同。但是,将相同数量的数据写入SQL需要大约25/30分钟。
我似乎找不出原因。我的直觉是,在用两种方法比较SQL表之后,Polars似乎是以随机顺序写入SQL的。当插入每一行时,我们会自动为该行分配一个“RecordId”,而Pandas Dataframe 是按顺序插入的。当我将其与Polars数据表进行比较时,RecordId字段变为“1,10,5,19,5000”。8等。
是不是还有什么我没注意到的,或者有什么原因让我这么做?
1条答案
按热度按时间h5qlskok1#
我猜你有一个
groupby
,如果你不告诉它maintain_order=True
,它就不会把事情安排得井井有条。如果没有
groupby
,则可以在发出to_pandas
之前发出sort