记录python读写mysql/clickhouse/odps等常见数据库

本文介绍了如何使用Python库进行ClickHouse、MySQL和ODPS的数据库操作。包括从ClickHouse读取DataFrame和常规格式数据,批量写入MySQL以提高效率,以及读取和写入ODPS数据的详细步骤。这些操作对于数据迁移和处理至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、读取clickhouse

1、读取得到DataFrame格式的数据

from clickhouse_driver import Client
def read_ck():
	client_ck = Client(host='',
	                   port='',
	                   user='',
	                   password='',
	                   send_receive_timeout=600,
	                   )
	sql = ''
	data = client_ck.query_dataframe(sql)
	return data

2、读取得到常规格式的数据

from clickhouse_driver import connect
def read_ck():
	conn = connect(host='', port='', user='',
	               database='',password='', send_receive_timeout=600)
    cursor = conn.cursor()
    cursor.execute(sql)
    data = cursor.fetchall()
    cursor.close()
    conn.close()
    return data

二、批量写入mysql

import pymysql
def save_mysql():
	sql = 'replace into test (name,age) value (%s,%s)'
	data = [['xiaoli','20'],['xiaozhang','25']] # 一个双层list
	conn = pymysql.Connect(
        host='',
        port='',
        user='',
        passwd='',
        db=''
    )
    cur = conn.cursor()
    cur.executemany(sql, data)
    conn.commit()
    conn.close()

这种方式可以极大提高写入Mysql的速度,虽然是批量写入但是在实际运行过程中也是分批写入,同一批数据的更改时间字段是不同的。

三、读写ODPS

1、读取ODPS

from odps import ODPS
def read_odps():
	o = ODPS(access_id='xxxxxxx', #登陆账号
	         secret_access_key='xxxxxxxx', #登陆密码
	         project='xxxxxx', #odps上的项目名称
	         endpoint='http://service.odps.aliyun.com/api') #官方提供的接口
	
	# 读数据
	sql = 'xxxxxx'
	with o.execute_sql(sql).open_reader() as reader:
		for record in reader:
			print(record)  # record可以类似于字典的形式取数据,例如record['name'],其中name是表中字段名
	# 读取出dataframe格式数据
	with o.execute_sql(sql).open_reader() as reader:
		data = reader.to_pandas()

2、写入ODPS

def write_odps():
	o = ODPS(access_id='xxxxxxx', #登陆账号
         secret_access_key='xxxxxxxx', #登陆密码
         project='xxxxxx', #odps上的项目名称
         endpoint='http://service.odps.aliyun.com/api') #官方提供的接口
    records = [['1','2','3'],['4','5','6'],['7','8','9']] #列表嵌套列表的数据格式
	o.write_table(tablename, records,partition='time=2021-07-29',create_partition=True) #表中以"time"作为分区,为time赋予值为2021-07-29时就将数据写入了“2021-07-29”分区内。

直接使用sql写数据(针对有分区表)

def write_odps():
	o = ODPS(access_id='xxxxxxx', #登陆账号
         secret_access_key='xxxxxxxx', #登陆密码
         project='xxxxxx', #odps上的项目名称
         endpoint='http://service.odps.aliyun.com/api') #官方提供的接口
	sql = 'insert into tablenameA partition(time) select B.time,B.name from tablenameB B'  # select的数据中必须包含partition即time,会在tablenameA 中自动写入相对应的分区
### 阿里云大数据产品概述 阿里云提供了广泛的大数据解决方案和服务,涵盖了从基础设施到高级分析工具的各个层面。这些产品的设计旨在帮助企业和开发者高效处理大规模的数据集并从中提取有价值的信息。 #### 基础设施类产品 - **分布式关系型数据库(DRDS)** DRDS 是一种水平拆分的关系型数据库服务,支持自动读写分离、平滑扩容等功能,适用于需要高性能事务处理的应用场景[^2]。 - **表格存储(Table Store, TS)** 表格存储是一种NoSQL数据库服务,具备高可用性和弹性扩展能力,适合于物联网设备管理、时间序列数据分析等领域。 - **对象存储(OSS)** 对象存储提供海量文件存储功能,具有极高的持久性和安全性,常用于备份存档以及静态资源托管等用途。 #### 数据处理与计算类 - **MaxCompute** MaxCompute 是一个面向离线批处理和查询加速的服务平台,能够轻松应对PB级别的结构化数据统计需求,在广告推荐系统构建等方面表现优异。 - **AnalyticDB for MySQL (ADB)** ADB 是一款基于MySQL协议的企业级实时OLAP引擎,专为复杂多维分析而优化,可实现秒级响应速度下的千亿级别记录扫描操作[^3]。 - **Hologres** Hologres 支持标准SQL语法的同时还兼容PostgreSQL客户端连接方式;它可以直接对接多种主流开源框架如Flink/Spark Streaming进行近实时增量同步更新。 #### 开发运维辅助工具 - **DataWorks** DataWorks 提供了一站式的全流程开发环境,内置丰富的模板库及可视化界面来简化ETL流程定义工作,并且可以方便地与其他阿里云组件集成使用。 - **Quick BI** Quick BI 致力于让商业智能变得简单易懂,通过拖拽式报表设计器让用户快速创建美观大方又实用性强的各种图表视图。 - **机器学习PAI系列** PAI 平台包含了AutoML等多个子模块,不仅降低了模型训练门槛而且提高了调参效率,助力企业更快更好地落地AI项目成果。 ```python # Python SDK 示例代码片段展示如何初始化MaxCompute实例 from odps import ODPS odps = ODPS('your-access-id', 'your-secret-key', project='default_project') tables = list(odps.list_tables()) print(tables) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值