欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python定時(shí)查詢starrocks數(shù)據(jù)庫(kù)并將結(jié)果保存在excel

 更新時(shí)間:2025年03月07日 15:23:07   作者:運(yùn)維仙人  
這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)定時(shí)查詢starrocks數(shù)據(jù)庫(kù)并將結(jié)果保存在excel,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下

背景

在工作過程中要定期的更新excel表的信息,每個(gè)星期都要去查詢strarocks的數(shù)據(jù)導(dǎo)出結(jié)果到excel,俗話說:“不會(huì)偷懶的運(yùn)維不是好運(yùn)維”,于是寫了python小程序解決這個(gè)重復(fù)的工作,設(shè)置定時(shí)任務(wù),直接去服務(wù)器下載導(dǎo)出的excel表格即可。

代碼

代碼的邏輯簡(jiǎn)單介紹:將要執(zhí)行的SQL以名稱進(jìn)行區(qū)分保存并放到目錄:SQLfileDir,設(shè)置結(jié)果存放路徑:./…/outputdir/。python先查詢數(shù)據(jù),然后以SQL文件名前綴為excle名稱保存,最后移動(dòng)到指定目錄。

本地調(diào)試界面:

# -*- coding: utf-8 -*-
# @Author : zjh
# @Time : 2023-12-27
# @Description: 定時(shí)跑數(shù)據(jù)保存到excel

import os
import shutil
import pandas as pd
import pymysql
import openpyxl
import datetime

class StarRocksExporter(object):
    def __init__(self, host, port, database, user, password, query,
                 srcdir, destdir,filename):
        self.host = host
        self.port = port
        self.database = database
        self.user = user
        self.password = password
        self.query = query
        self.srcdir = srcdir
        self.destdir = destdir
        self.filename = filename
        self.writer = pd.ExcelWriter(filename+str('.xlsx'))

    def export_to_excel(self):
        df = pd.read_sql(self.query, self.engine)
        # print(df)
        df.to_excel(self.writer, sheet_name=self.filename, index=False)
        self.writer.save()

    def move_to_dest(self):
        if not os.path.isdir(self.destdir):
            self.destdir = os.mkdir(self.destdir)
        file_list = os.listdir(self.srcdir)
        for file in file_list:
            #print(file)
            #print(file.split('.')[0])
            try:
                #print(file.split('.')[1])
                fiel_str = file.split('.')[1]
                if fiel_str == 'xlsx':
                    shutil.move(str(self.srcdir) + file, str(self.destdir) + file)
            except Exception:
                print("沒有后綴的文件:",file)
            #shutil.move(str(self.srcdir) + file, str(self.destdir) + file)


    def execute(self):
        with pymysql.connect(host=self.host,port=self.port,database=self.database,user=self.user,password=self.password) as engine:
            self.engine = engine
            self.query_star_rock(self.query)
            self.export_to_excel()
            self.move_to_dest()

    def query_star_rock(self, query):
        cursor = self.engine.cursor()
        cursor.execute(query)
        results = cursor.fetchall()
        return  results

    def get_user(self, user):
        pass

    def get_password(self, password):
        pass

if __name__ == '__main__':
    Destdir = './../outputdir/'
    Srcdir = './'
    folder_path = './../SQLfileDir/'
    file_list = os.listdir(folder_path)

    for sqlfile in file_list:
        file_path=str(folder_path)+str(sqlfile)
        with open(file_path, "r", encoding='utf-8') as f:
           sql = f.read()
        srfilename = sqlfile.split('.')[0]
        exporter = StarRocksExporter('192.168.10.11', 19030, 'manager', 'sys_ro','sdagfsdg!@#saf134',
                                sql,Srcdir,Destdir,srfilename)
        exporter.execute()

MySQL的導(dǎo)出也可以用該腳本,因?yàn)閟tarrocks/Doris連接都是用的MySQL驅(qū)動(dòng),兼容MySQL語(yǔ)法。

方法擴(kuò)展

下面小編為大家介紹一下Python如何基于starrocks庫(kù)連接查詢StarRocks數(shù)據(jù)庫(kù),需要的可以參考一下

SQLAlchemy 用法

要使用 SQLAlchemy 連接到 StarRocks,連接字符串如下所示:

starrocks://<User>:<Password>@<Host>:<Port>/<Catalog>.<Database>

import pandas as pd
from sqlalchemy import create_engine, text

# 設(shè)置 pandas 顯示選項(xiàng)以顯示所有列
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.max_colwidth', None)

"""
'starrocks://<User>:<Password>@<Host>:<Port>/<Catalog>.<Database>'
"""
def query_user_data(user_name):
    # 連接到StarRocks數(shù)據(jù)庫(kù)
    engine = create_engine('starrocks://test_user:test_user123@192.168.1.2:9030/sr_db')

    # 執(zhí)行查詢并獲取結(jié)果
    with engine.connect() as connection:
        sql_query = "select data from sr_db.user where user_name=" + user_name
        result = connection.execute(text(sql_query)).fetchall()

    # 將查詢結(jié)果轉(zhuǎn)換為 Pandas DataFrame
    ret_df = pd.DataFrame(result)
    return ret_df

# main function
if __name__ == '__main__':
    console = Console()
    user_name = "'tom'"
    df = query_user_data(user_name )
    # 如果 DataFrame 不為空,顯示
    if df is not None and not df.empty:
        print(df)
    else:
        print("數(shù)據(jù)為空")

到此這篇關(guān)于Python定時(shí)查詢starrocks數(shù)據(jù)庫(kù)并將結(jié)果保存在excel的文章就介紹到這了,更多相關(guān)Python定時(shí)查詢starrocks內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python并發(fā)編程 Process對(duì)象的其他屬性方法join方法詳解

    python并發(fā)編程 Process對(duì)象的其他屬性方法join方法詳解

    這篇文章主要介紹了python并發(fā)編程 Process對(duì)象的其他屬性方法join方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 基于Python實(shí)現(xiàn)加強(qiáng)版煙花

    基于Python實(shí)現(xiàn)加強(qiáng)版煙花

    這篇文章主要為大家詳細(xì)介紹了如何利用Python制作一個(gè)加強(qiáng)版煙花景,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-02-02
  • numpy中的高維數(shù)組轉(zhuǎn)置實(shí)例

    numpy中的高維數(shù)組轉(zhuǎn)置實(shí)例

    下面小編就為大家分享一篇numpy中的高維數(shù)組轉(zhuǎn)置實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python+matplotlib繪制簡(jiǎn)單的海豚(頂點(diǎn)和節(jié)點(diǎn)的操作)

    python+matplotlib繪制簡(jiǎn)單的海豚(頂點(diǎn)和節(jié)點(diǎn)的操作)

    這篇文章主要介紹了python+matplotlib繪制簡(jiǎn)單的海豚(頂點(diǎn)和節(jié)點(diǎn)的操作),具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Python利用PyPDF2庫(kù)處理PDF文件的基本操作

    Python利用PyPDF2庫(kù)處理PDF文件的基本操作

    PyPDF2是一個(gè)Python庫(kù),用于處理PDF文件,包括合并、分割、旋轉(zhuǎn)和提取文本等操作,它是一個(gè)功能強(qiáng)大且靈活的工具,可用于自動(dòng)化處理PDF文件,適用于各種應(yīng)用,從文檔管理到數(shù)據(jù)分析,本文將深入介紹PyPDF2庫(kù),掌握如何利用它來處理PDF文件,需要的朋友可以參考下
    2023-11-11
  • pytorch顯存一直變大的解決方案

    pytorch顯存一直變大的解決方案

    這篇文章主要介紹了pytorch顯存一直變大的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 如何優(yōu)雅地處理Django中的favicon.ico圖標(biāo)詳解

    如何優(yōu)雅地處理Django中的favicon.ico圖標(biāo)詳解

    默認(rèn)情況下,瀏覽器訪問一個(gè)網(wǎng)站的時(shí)候,同時(shí)還會(huì)向服務(wù)器請(qǐng)求"/favicon.ico"這個(gè)URL,目的是獲取網(wǎng)站的圖標(biāo),下面這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅地處理Django中favicon.ico圖標(biāo)的相關(guān)資料,需要的朋友可以參考下
    2018-07-07
  • python隨機(jī)模塊random的22種函數(shù)(小結(jié))

    python隨機(jī)模塊random的22種函數(shù)(小結(jié))

    這篇文章主要介紹了python隨機(jī)模塊random的22種函數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 解決ToPILImage時(shí)出現(xiàn)維度報(bào)錯(cuò)問題pic should be 2/3 dimensional. Got 4 dimensions.

    解決ToPILImage時(shí)出現(xiàn)維度報(bào)錯(cuò)問題pic should be 2/3 d

    這篇文章主要介紹了解決ToPILImage時(shí)出現(xiàn)維度報(bào)錯(cuò)問題pic should be 2/3 dimensional. Got 4 dimensions.具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python中向二維數(shù)組中添加整行或者增列元素問題

    python中向二維數(shù)組中添加整行或者增列元素問題

    這篇文章主要介紹了python中向二維數(shù)組中添加整行或者增列元素問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評(píng)論