栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

一、读取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是表中字段名

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 中自动写入相对应的分区
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/925796.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号