背景

在高可用的背景下,有的时候会发生数据库主从切换。python实现检测当前数据库是否切换成功

方法核心思想

select pg_is_in_recovery();

通过执行这一条sql语句来判断,当前的数据库是否为主节点。同时,假如语句执行成功,则自然而然证明,该数据库已经可用。

代码实现

实现前需要安装peewee和psycopg2包

import time
from datetime import datetime
from playhouse.db_url import connectdb_url_ip = "192.168.149.171"
db_url = "postgresql+pool://postgres:620stz^@)@cn@" + db_url_ip + ":" + "5432" + "/mydb"
db = connect(url=db_url)
time_start = datetime.now()while True:try:cursor = db.execute_sql('select pg_is_in_recovery();')is_backup = cursor.fetchall()[0][0]print(is_backup)if not is_backup:# 判定这个不是一个备节点print("连接成功")breakexcept Exception as e:print("连接失败,判断是否已经超时")time_now = datetime.now()if (time_now - time_start).seconds > 60:# 判定出,连接已经超时breakelse:time.sleep(1)

结果

在执行开始前停掉postgresql,在执行中开启postgresql

python实现一种检测postgresql数据库是否已经连接且为主节点的办法相关推荐

  1. 解决postgresql数据库localhost可以连接,ip连接不了的问题

    解决postgresql数据库localhost可以连接,ip连接不了的问题 参考文章: (1)解决postgresql数据库localhost可以连接,ip连接不了的问题 (2)https://ww ...

  2. postgresql 数据库 等保审计 遇到的问题与办法 (整理)

    postgresql 数据库 等保审计 遇到的问题与办法 (整理) 文章目录 postgresql 数据库 等保审计 遇到的问题与办法 (整理) 1. 数据库未启用鉴别信息检查 2. 数据库未配置密码 ...

  3. PostgreSQL数据库设置远程连接

    1. 修改 data/postgresql.conf 文件 #listen_addresses = 'localhost' listen_addresses = '*' 2. 修改 data/pg_h ...

  4. homeassistant mysql_给Homeassistant更换PostgreSQL数据库

    给Homeassistant更换PostgreSQL数据库 2020-11-12 19:17:58 7点赞 64收藏 2评论 是返乡过年?还是就地过年?最新一届#双面过节指南#开始啦!本次征稿活动分为 ...

  5. 用python画微笑脸表情_一种检测视频中人脸微笑表情的方法与流程

    本发明涉及视频检测技术领域,特别涉及一种视频中人脸微笑表情的检测方法. 背景技术: 近几年来,表情识别技术在计算机视觉和模式识别领域逐步成为一个重要的研究热点,已经有越来越多的科研成果是基于图像或视频 ...

  6. Python读取postgresql数据库

    目录 一.读取postgresql数据库 二.查询数据 一.读取postgresql数据库 (1)首先,我们需要安装 psycopg 驱动.通过 pip 安装最新的 psycopg pip insta ...

  7. 独家 | 每个数据科学家应该知道的五种检测异常值的方法(附Python代码)

    作者:Will Badr 翻译:顾伟嵩校对:欧阳锦本文约1600字,建议阅读5分钟本文介绍了数据科学家必备的五种检测异常值的方法. 无论是通过识别错误还是主动预防,检测异常值对任何业务都是重要的.本文 ...

  8. python测试代码运行时间_10种检测Python程序运行时间、CPU和内存占用的方法

    在运行复杂的Python程序时,执行时间会很长,这时也许想提高程序的执行效率.但该怎么做呢? 首先,要有个工具能够检测代码中的瓶颈,例如,找到哪一部分执行时间比较长.接着,就针对这一部分进行优化. 同 ...

  9. python postgresql跨数据库查询_python访问PostgreSQL数据库之连接库Psycopg2

    python访问PostgreSQL数据库之连接库Psycopg2 作者:佣工7001 由于要在python访问PostgreSQL数据库,需要一个符合DB-API的连接库.通过搜索,锁定两个候选库: ...

最新文章

  1. Vishay将MCW 0406 AT系列精密宽端子薄膜片式电阻欧姆值降至业内最低
  2. Unet项目解析(6): 图像分块、整合 / 数据对齐、网络输出转成图像
  3. 【视频】vue生命周期函数
  4. 莫名其秒的Cannot load JDBC driver class 'com.mysql.jdbc.Driv
  5. LeetCode 540. 有序数组中的单一元素(位运算二分查找)
  6. Android RecyclerView(九)滑动监听综述
  7. watir-webdriver使用过程中异常
  8. 台式机装mac系统_苹果电脑装双系统mac+win7图文教程
  9. 【优化求解】基于matlab遗传算法求解多城市多应急物流中心选址问题【含Matlab源码 1724期】
  10. HTML注册页面的设计
  11. IMU(陀螺仪)角速度测量原理-科氏力测旋转角速度
  12. 保险精算笔记Chapter02
  13. matlab vrp 线性规划,VRP算法学习
  14. 真的是没有底线了,重新认识Java
  15. 有python画螺旋线
  16. 按照C++语言程序结构组成数字电路进行计算的计算机
  17. 什么是内部类?有什么作用?静态内部类和非静态内部类的区别?
  18. Android Studio Template模板 制作模板
  19. MOSFET驱动电路
  20. hx711模块原理图及驱动程序你知道了么?

热门文章

  1. 注意区分Mb(Mbps)与MB(million bit和million Byte)
  2. 深度学习中学习率(lr:learn rate)和batchsize如何影响模型性能?
  3. Python 用 if __name__ == ‘__main__‘:语句来控制代码是被直接运行还是导包执行
  4. Python中正则表达式的分割和替换
  5. linux——用户理解及管理
  6. rocketmq发送顺序消息(四)
  7. 一个springboot能支持多少并发_吃透这篇,你也能搭建出一个高并发和高性能的系统...
  8. win10 不锁屏直接进入密码界面
  9. 安装包镜像_创建 macOS Catalina cdr格式镜像安装包
  10. python列表推导式_聊一聊:python的各种推导式(列表推导式、字典推导式、集合推导式)...