最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

背景

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

代碼

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

本地調試界面:

# -*- coding: utf-8 -*-
# @Author : zjh
# @Time : 2023-12-27
# @Description: 定時跑數(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的導出也可以用該腳本,因為starrocks/Doris連接都是用的MySQL驅動,兼容MySQL語法。

方法擴展

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

SQLAlchemy 用法

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

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

import pandas as pd
from sqlalchemy import create_engine, text

# 設置 pandas 顯示選項以顯示所有列
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ù)庫
    engine = create_engine('starrocks://test_user:test_user123@192.168.1.2:9030/sr_db')

    # 執(zhí)行查詢并獲取結果
    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()

    # 將查詢結果轉換為 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ù)為空")

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

相關文章

  • Python?urllib庫的使用指南詳解

    Python?urllib庫的使用指南詳解

    所謂網(wǎng)頁抓取,就是把URL地址中指定的網(wǎng)絡資源從網(wǎng)絡流中讀取出來,保存到本地。?在Python中有很多庫可以用來抓取網(wǎng)頁,本文將講解其中的urllib庫,感興趣的可以了解一下
    2022-04-04
  • 詳解Python中迭代器和生成器的原理與使用

    詳解Python中迭代器和生成器的原理與使用

    關于python中迭代器,生成器介紹的文章不算少數(shù),有些寫的也很透徹,但是更多的是碎片化的內容。本篇嘗試用系統(tǒng)的介紹三者的概念和關系,需要的可以參考一下
    2022-05-05
  • spyder常用快捷鍵(分享)

    spyder常用快捷鍵(分享)

    下面小編就為大家?guī)硪黄猻pyder常用快捷鍵(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 詳解Python中heapq模塊的用法

    詳解Python中heapq模塊的用法

    Python中的heapq模塊提供了一種堆隊列heapq類型,這樣實現(xiàn)堆排序等算法便相當方便,這里我們就來詳解Python中heapq模塊的用法,需要的朋友可以參考下
    2016-06-06
  • Python3使用PyQt5制作簡單的畫板/手寫板實例

    Python3使用PyQt5制作簡單的畫板/手寫板實例

    下面小編就為大家?guī)硪黄狿ython3使用PyQt5制作簡單的畫板/手寫板實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • python實現(xiàn)對指定輸入的字符串逆序輸出的6種方法

    python實現(xiàn)對指定輸入的字符串逆序輸出的6種方法

    這篇文章主要介紹了python實現(xiàn)對指定輸入的字符串逆序輸出的6種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 跟老齊學Python之再深點,更懂list

    跟老齊學Python之再深點,更懂list

    對于list,由于她的確非常非常龐雜,在python中應用非常廣泛,所以,雖然已經(jīng)介紹完畢了基礎內容,這里還要用一講深入一點點,往往越深入越...
    2014-09-09
  • Python中交換兩個元素的實現(xiàn)方法

    Python中交換兩個元素的實現(xiàn)方法

    今天小編就為大家分享一篇Python中交換兩個元素的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python中工廠模式的實現(xiàn)小結

    Python中工廠模式的實現(xiàn)小結

    工廠模式是一種創(chuàng)建型設計模式,通過定義一個工廠類,將對象的實例化過程封裝起來,本文主要介紹了Python中工廠模式的實現(xiàn)小結,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • python讀取并繪制nc數(shù)據(jù)的保姆級教程

    python讀取并繪制nc數(shù)據(jù)的保姆級教程

    其實目前很多數(shù)據(jù)以nc格式存儲,這篇文章主要給大家介紹了關于python讀取并繪制nc數(shù)據(jù)的保姆級教程,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05

最新評論

邹城市| 慈利县| 河北省| 都昌县| 咸丰县| 尉氏县| 鸡东县| 靖江市| 霸州市| 金塔县| 贡嘎县| 堆龙德庆县| 商丘市| 明水县| 农安县| 阿克苏市| 韩城市| 广饶县| 白城市| 嵩明县| 十堰市| 高雄市| 醴陵市| 博客| 盐城市| 安康市| 石门县| 边坝县| 漾濞| 亳州市| 阆中市| 嘉义市| 昭苏县| 普陀区| 连州市| 那曲县| 彰化市| 左权县| 海林市| 昌黎县| 江源县|