前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python引用数据库

python引用数据库

作者头像
章工运维
发布2023-05-19 17:26:25
5390
发布2023-05-19 17:26:25
举报
文章被收录于专栏:章工运维章工运维

# python引用数据库两种方式

# 方式一
代码语言:javascript
复制
# -*- coding: UTF-8 -*-
import pymysql
import requests
import json
#建立连接
conn = pymysql.connect(host='##', port=3306, database='##', user='##', password='####')
#拿到游标
cursor = conn.cursor()
#执行sql语句
sql = "SELECT * FROM bh_job_exec WHERE job_cde='company' AND exec_status='SUCCESS' AND JSON_UNQUOTE(JSON_EXTRACT(exec_param, '$.businessDate')) = DATE_SUB(CURDATE(),INTERVAL 1 DAY);"
# print(sql)
def sendDing(msg):
    dingding_url='https://oapi.dingtalk.com/robot/send?access_token=xxxxx'
    data = {"msgtype": "text","text": {"content": "告警:"+str(msg)}}
    headers = {'Content-Type':'application/json;charset=UTF-8'}
    send_data = json.dumps(data).encode('utf-8')
    ret = requests.post(url=dingding_url,data=send_data,headers=headers)


try:
    row = cursor.execute(sql)
    # print(row)
    # Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
    data=cursor.fetchone()
    #print(data)
    #进行判断
    if data:
        #print("GFSS结算成功")
        sendDing("GFSS结算成功")
    else:
        #print("GFSS结算失败")
        sendDing("GFSS结算失败")
except:
    print("Error: unable to fetch data")
finally:
    cursor.close()
    #关闭数据库
    conn.close()
# 方式二
代码语言:javascript
复制
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import pymysql
import pickle
import os.path,sys
import urllib.request
import urllib.parse
import json
ding_url = "https://oapi.dingtalk.com/robot/send?access_token=xxxx" 
def get_tabcol_current():
    tabcol_dic = {}
    ## 目标库的信息
    db = pymysql.connect(host='xxx',
                         port=13306,
                         user='xx',
                         password='xx',
                         database='xxx')
    cursor = db.cursor()
 
    sql = "SELECT * FROM `terminal_session` WHERE date_end is Null"
 
    cursor.execute(sql)
    results = cursor.fetchall()
    for row in results:
      if row[1] in tabcol_dic:
          tabcol_dic[row[1]].append(row[2])
      else:
          tabcol_dic[row[1]]=[row[2]]
    cursor.close()
    db.close()
    # print(tabcol_dic) 
    return tabcol_dic
    
def send_msg_by_ding(message):
    header = {
        "Content-Type": "application/json"
    }
    data = {
        "msgtype": "text", 
        "text": {"content": message}
    }
    send_data = json.dumps(data).encode('utf-8')
    req = urllib.request.Request(ding_url, data=send_data, headers=header, method='POST')
    ret = urllib.request.urlopen(req)
    if ret.status != 200:
        print("send message error!")
def main():    
    ret = get_tabcol_current()
    # print(ret)
    add_dic = ret
    # add_dic = list(ret.values())
    # del_dic = list(ret.keys())
    message = "堡垒机告警:\n"
    if add_dic:
        for (tab,cols) in add_dic.items():
            cols.sort()
            message = message + tab + " 登录了: " + ', '.join(cols) + "\n"
    if add_dic:
        send_msg_by_ding(message)
    # print(del_dic)
    # print(1111)
if __name__ == '__main__':
    main()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # python引用数据库两种方式
    • # 方式一
      • # 方式二
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档