connector-x | 让数据从DB高速导入到DataFrame中

开学特惠| Python网络爬虫与文本分析

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

  • [ ] ...


API参数

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
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: import pymysql import pandas as pd # 连接数据db = pymysql.connect(host="localhost",user="username",password="password",db="database") # 获取游标 cursor = db.cursor() # 执行SQL查询 cursor.execute("SELECT * FROM table") # 获取查询结果 data = cursor.fetchall() # 关闭数据db.close() # 将查询结果以DataFrame格式存储 df = pd.DataFrame(list(data)) # 将DataFrame转化为html文件 html = df.to_html() # 将html文件保存到web页面 with open('data.html','w') as f: f.write(html) ### 回答2: 编写Python代码实现将MySQL数据可视化到Web页面可以使用Python的Flask框架和Matplotlib库来实现。 首先,需要安装Flask和Matplotlib库以及相关的依赖项。使用以下命令安装它们: ``` pip install flask pip install matplotlib ``` 接下来,可以编写一个Flask应用程序,用于连接MySQL数据库并获取数据。示例代码如下: ```python from flask import Flask, render_template import matplotlib.pyplot as plt import mysql.connector app = Flask(__name__) @app.route('/') def index(): # 连接MySQL数据库 mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="yourdatabase" ) # 获取数据 cursor = mydb.cursor() cursor.execute("SELECT * FROM yourtable") data = cursor.fetchall() # 生成柱状图 x = [row[0] for row in data] y = [row[1] for row in data] fig, ax = plt.subplots() ax.bar(x, y) # 将图表保存为临时文件 chart_path = "/path/to/chart.png" plt.savefig(chart_path) return render_template('index.html', chart_path=chart_path) if __name__ == '__main__': app.run() ``` 在上面的代码,需要将`yourusername`、`yourpassword`、`yourdatabase`和`yourtable`替换为实际的MySQL数据库连接信息和表名。 接下来,需要创建一个名为`index.html`的模板文件,用于显示数据可视化图表。示例代码如下: ```html <!DOCTYPE html> <html> <head> <title>Data Visualization</title> </head> <body> <h1>Data Visualization</h1> <img src="{{ chart_path }}" alt="Chart"> </body> </html> ``` 在上面的代码,使用了Flask的模板引擎来渲染模板文件,并将图表的路径传递给模板文件的`chart_path`变量。 最后,运行Flask应用程序,可以在浏览器访问`http://localhost:5000`来查看数据可视化图表。 以上就是用Python编写实现将MySQL数据可视化到Web页面的简单示例代码。实际使用,还可以根据需求进行进一步的定制和优化。 ### 回答3: 要编写一段Python代码将MySQL数据可视化到web页面,需使用以下步骤: 1. 导入所需的库:需要包含MySQL连接库和web框架库,如`pymysql`和`flask`。 ```python import pymysql from flask import Flask, render_template ``` 2. 连接到MySQL数据库:使用`pymysql`库连接到MySQL数据库,并获取游标对象。 ```python conn = pymysql.connect(host='localhost', user='root', password='password', db='database_name') cursor = conn.cursor() ``` 3. 查询MySQL数据库的数据:使用游标对象执行SQL查询语句,获取需要的数据。 ```python sql = "SELECT * FROM table_name" cursor.execute(sql) data = cursor.fetchall() ``` 4. 使用web框架创建一个简单的web应用程序:使用`flask`库创建一个简单的应用程序,并设置路由。 ```python app = Flask(__name__) @app.route('/') def index(): return render_template('index.html', data=data) if __name__ == '__main__': app.run() ``` 5. 创建一个HTML模板文件:在项目的根目录下创建一个名为`index.html`的文件,用于展示数据。 ```html <!DOCTYPE html> <html> <head> <title>MySQL数据可视化</title> </head> <body> <table> <tr> <th>ID</th> <th>Name</th> <th>Age</th> </tr> {% for row in data %} <tr> <td>{{ row[0] }}</td> <td>{{ row[1] }}</td> <td>{{ row[2] }}</td> </tr> {% endfor %} </table> </body> </html> ``` 6. 运行应用程序:在命令行运行Python脚本,然后访问`http://localhost:5000`即可在web页面上看到MySQL数据数据。 以上是一个简单的示例,你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值