ConnectorX 使您能够以最快和最节省内存的方式将数据从数据库加载到 Python 中。
你需要的是一行代码:
import connectorx as cx
cx.read_sql("postgresql://username:password@server:port/database", "SELECT * FROM lineitem")
或者,您可以通过指定**分区字段(列)**来使用并行性加速数据加载。
import connectorx as cx
cx.read_sql("postgresql://username:password@server:port/database", "SELECT * FROM lineitem", partition_on="l_orderkey", partition_num=10)
该函数将通过将**指定字段(列)**平均拆分为分区数量来对查询进行分区。ConnectorX 将为每个分区分配一个线程来并行加载和写入数据。目前,我们支持对 SPJA 查询的整数列进行分区。
命令行执行
pip install connectorx
我们比对了modin、pandas、dask和connectorX中的read_sql函数,实验文件8.6G,4核电脑并行读取。读取速度和内存占用表现如下图
从两方面看,connectorX以弱三分之一的内存占用和21倍的读取速度遥遥领先于其他几个数据读取库。
[x] Postgres
[x] Mysql
[x] Sqlite
[x] Redshift(通过postgres协议)
[x] Clickhouse(通过Mysql协议)
[x] SQL Server
[ ] Oracle
[ ] ...
connectorx.read_sql(conn: str,
query: Union[List[str], str],
*,
return_type: str = "pandas",
protocol: str = "binary",
partition_on: Optional[str] = None,
partition_num: Optional[int] = None)
conn: str: 统一资源端口,支持的URI格式例如: (postgres|postgressql|mysql|mssql|sqlite)://username:password@addr:port/dbname
.
query: Union[str, List[str]]: 为获取数据资源,支持传入单个SQL查询或者SQL查询列表
return_type: str = "pandas": connectorx.read_sql操作返回的数据类型,默认pandas;此参数共支持 pandas
, arrow
, pandas
, modin
, dask
or polars
.
protocol: str = "binary": 协议默认支持文件以二进制导入数据
partition_on: Optional[str]: 可选,根据某字段(列)对数据进行分区。
partition_num: Optioinal[int]: 可选,线程数
从SQL文件中以单线程读取,读取结果以dataframe格式返回
import connectorx as cx
postgres_url = "postgresql://username:password@server:port/database"
query = "SELECT * FROM lineitem"
cx.read_sql(postgres_url, query)
根据字段l_orderkey自动分区,以10线程读取SQL,读取结果以dataframe格式返回
import connectorx as cx
postgres_url = "postgresql://username:password@server:port/database"
query = "SELECT * FROM lineitem"
cx.read_sql(postgres_url,
query,
partition_on="l_orderkey",
partition_num=10)
更多内容可查看https://github.com/sfu-db/connector-x
开学特惠| Python网络爬虫与文本分析
近期文章
腾讯课堂 | Python网络爬虫与文本分析
中文金融情感词典发布啦 | 附代码
B站视频 | Python自动化办公
wordexpansion包 | 新增词向量法构建领域词典
语法最简单的微博通用爬虫weibo_crawler
hiResearch 定义自己的科研首页
大邓github汇总, 觉得有用记得star
whatlies包 | 简单玩转词向量可视化
multistop ~ 多语言停用词库
Jaal 库 轻松绘制动态社交网络关系图
SciencePlots | 科研样式绘图库
使用streamlit上线中文文本分析网站
爬虫实战 | 采集&可视化知乎问题的回答
Clumper | dplyr式的Python数据操作包
Clumper库 | 常用的数据操作函数
Clumper库 | Groupby具体案例用法
Clumper库 | 其他数据分析
plydata库 | 数据操作管道操作符>>
plotnine: Python版的ggplot2作图库
读完本文你就了解什么是文本分析
文本分析在经管领域中的应用概述
综述:文本分析在市场营销研究中的应用
plotnine: Python版的ggplot2作图库
Wow~70G上市公司定期报告数据集
漂亮~pandas可以无缝衔接Bokeh
YelpDaset: 酒店管理类数据集10+G