无需SQLAlchemy将MySQL查询结果读取至Pandas的替代方案咨询
无需SQLAlchemy将MySQL查询结果读取至Pandas的替代方案咨询
我现在需要把MySQL的查询结果导入Pandas,但不想用SQLAlchemy(先说明下,我知道很多人喜欢ORM和SQLAlchemy,但我觉得它在大数据量下性能拉胯,而且我还有不少不需要Pandas的直接查询需求,用它搞ORM那套太麻烦,这里就不争论这个了)。目前我用的是mysql.connector来连接数据库,有时候直接执行查询不用Pandas也挺顺手的。
现在问题是Pandas的read_sql已经在弃用直接数据库连接的方式了,虽然现在还能用但会弹出 deprecation warning,我也知道以后说不定就彻底不能用了,所以想问问有没有什么替代方案。目前我想到的几个方向:
- 自己写一个包装函数:用
mysql.connector执行查询,拿到结果后,根据cursor.description来手动构建Pandas DataFrame,还要处理数据填充。这方法肯定能行,但像时间戳转datetime这种边角细节处理起来太繁琐了,而且相当于把之前Pandas高效实现过的代码又重写一遍,有点没必要。 - 用
warnings包把警告压制住:虽然能解决当前的问题,但也清楚以后版本更新可能就彻底用不了了,算是饮鸩止渴的临时方案。 - 换其他的DataFrame库或者SQL交互库:找那种高效、不强制ORM模式的工具,但说实话我还没深入研究过这方面。
补充下我试过SQLAlchemy的情况:性能实在太差了,因为我要处理的数据量很大,它完全hold不住。而且想从里面取出原始连接来直接执行查询也特别麻烦,另外我也担心连接池方面的问题会不会有坑。
我用mysql.connector做直接连接的时候,之前没怎么在意列的数据类型(比如没把时间戳转成datetime),用起来倒是挺顺畅的,但真要让我从头把read_sql的功能自己实现一遍,实在没那个动力。
备注:内容来源于stack exchange,提问作者DRH
相关产品推荐
相关产品推荐

