python etl_common_python通用数据库操作和ETL工具使用讲解

由于python的数据库操作有各种样的第三方库,相互之间使用都会有点差别(比如sql占位符就有'',':','%s'等,该工具的通配符都是":"标准),导致代码在切换数据库时也需要相应改动,应此自己封装了一个通用的库可以用python调用各种类型的数据库并且进一步简化了数据库操作步骤,并且可以自定义扩展

Installation:

pip install py_db

下面都以python内置的sqlite数据库为例

查询操作

from py_db import connection

with connection("test.db", driver="sqlite3") as db:

res1 = db.query("select id, name from test")

res2 = db.dict_query("select id, name from test")

res1返回格式:[(1,"test1"),(2, "test2")]

res2返回格式:[{'id': 1, 'name': 'test1'},{'id': 2, 'name': 'test2'}]

插入更新操作

列表参数:

db.insert("insert into test (id, name) values(:1, :2)", [(1,"test1"),(2, "test2")])

字典参数:

db.insert("insert into test (id, name) values(:id, :name)", [{'id': 1, 'name': 'test1'},{'id': 2, 'name': 'test2'}])

如果你的字典key值和数据库的表能对应上还可以这么写:

db.insert_by_dict('test', [{'id': 1, 'name': 'test1'},{'id': 2, 'name': 'test2'}])

直接传入表名称和对应的字典或字典集合,建议结合pandas做数据采集、处理、入库非常方便

这里只介绍几种最常用的用法,还封装了很多其他功能

可以做自定义操作扩展:

这里是基于sqlalchemy方式来连接的oracle数据库

from py_db import Connection

class MyUDF(Connection):

def total_data(self, table):

return self.query("select count(*) from :1", table)

with MyUDF("oracle://lyt:lyt@local:1521/xe") as db:

count = db.total_data('test')

print("test表的总数量为:", count)

返回的db.connect对象可以作为pandas.read_sql 中的con参数使用

介绍下几个常用连接方式:

connection(host="localhost", user='root', password='password', database='test', driver="pymysql")

pyodbc

connection('DSN=mydb;UID=root;PWD=password', driver="pyodbc")

connection('lyt/lyt@local:1521/xe', driver="cx_Oracle")

sqlalchemy

connection("oracle://lyt:lyt@local:1521/xe")

driver参数默认是以sqlalchemy方式连接,个人也比较喜欢用sqlalchemy的方式连接,应为数据库配置起来方便,看起来清晰简洁,另外基于此包之上和pandas结合开发了简易的python etl工具,目前还不是很完善,仅仅都是支持关系型数据库的,如果有人使用会考虑做的更通用,比如能支持文件,nosql之类的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python ETL是指使用Python编程语言进行数据提取、转换和加载(Extract, Transform, Load)的过程。引用中提到了一个纯Python开发的ETL框架pyetl,相比其他ETL工具,pyetl可以灵活地对每个字段添加自定义函数,使得数据转换过程更加灵活。而且,pyetl是纯Python代码操作,更加符合开发人员的习惯,相对于专业ETL工具更轻量。引用中介绍了使用Python进行ETL数据处理的实战案例,其中第一步是数据提取,可以使用Python的pandas库来读取各种不同的数据源,如CSV文件,并将其转换为DataFrame对象。所以,Python ETL是一种使用Python进行数据处理的方法,可以从各种数据源中提取数据,并通过一系列的处理和转换,最终将数据导入到目标系统中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python ETL工具 pyetl](https://download.csdn.net/download/weixin_38606206/14842276)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [使用Python进行ETL数据处理](https://blog.csdn.net/qq_44273429/article/details/130245912)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值