如何在 sqlalchemy 中配置故障转移

2024-03-15

sqlalchemy 中是否有一种方法可以让开发人员指定多个 mysql 主机来尝试连接,并且如果第一个主机连接失败,它将自动故障转移到第二个主机?


我在 mysql 上有一个解决方案,使用名为MySQL 连接器/Python who's 连接()函数可以接受名为的参数failover.

希望它将来能帮助一些人。

这是参考链接:

http://docs.sqlalchemy.org/en/latest/dialects/mysql.html#module-sqlalchemy.dialects.mysql.mysqlconnector http://docs.sqlalchemy.org/en/latest/dialects/mysql.html#module-sqlalchemy.dialects.mysql.mysqlconnector

https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html

这是我的测试代码

global engine, session, metadata
from sqlalchemy import create_engine, MetaData
from sqlalchemy.orm import scoped_session, sessionmaker
import mysql.connector
import time

SQLALCHEMY_DATABASE_URI='mysql+mysqlconnector://test:[email protected] /cdn-cgi/l/email-protection:24801/test?charset=utf8'
SQLALCHEMY_POOL_SIZE=45
SQLALCHEMY_POOL_MAX_OVERFLOW=45

connect_args={
    'raise_on_warnings': True,
    'failover': [{
        'user': 'test',
        'password': 'test2013',
        'host': '172.16.1.160',
        'port': 24802,
        'database': 'test',
    }, {
        'user': 'test',
        'password': 'test2013',
        'host': '172.16.1.160',
        'port': 24803,
        'database': 'test',
    }]
}
engine = create_engine(SQLALCHEMY_DATABASE_URI,connect_args=connect_args,
                       pool_size=SQLALCHEMY_POOL_SIZE,
                       max_overflow=SQLALCHEMY_POOL_MAX_OVERFLOW)
session = scoped_session(sessionmaker(autocommit=False,
                                      autoflush=False,
                                      bind=engine))
metadata = MetaData(bind=engine)


base= 2000

while True:
    base+=1
    info = "info%s"%base
    print info
    results = session.execute("insert into t1 values(%s,'%s')"%(base,info))
    print results
    session.commit()
    time.sleep(10)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 sqlalchemy 中配置故障转移 的相关文章

随机推荐

  • 使用 DirectX 或 OpenGL 显示 100 个浮动立方体

    我想使用显示 100 个浮动立方体DirectX or OpenGL 我正在寻找一些示例源代码或该技术的描述 我无法正确显示多个立方体 我在网上搜索了一系列很好的教程 尽管他们谈论了如何做3D基元 我找不到有关如何进行大量操作的信息3D原语
  • 如何为 VB.net 程序创建启动屏幕

    如何为 vb net 程序创建启动屏幕 我想制作一个在程序开始之前和结束之后出现的视觉效果 这可能吗 打开你的 vb net 添加新项目 转到表单的属性 清除文本 Set the 表单边框样式没有 插入背景图像 将背景图像设置为拉伸 Add
  • 如何删除xlwings中的列?

    我在用着xlwings在 Windows 上 带有 Python 2 7 的 Excel 2007 并且想要使用以下命令删除范围或列xlwings 据我所知 删除范围或列是一个缺失的功能 所以我尝试按照给出的说明进行操作here http
  • 隐式本地化和嵌入资源

    我们可以在使用嵌入资源文件 resx 的同时在 asp net meta resourcekey 中使用隐式本地化吗 如果 app localresouces 中的资源设置为 内容 则一切正常 但如果将其设置为 嵌入 则无法使其工作 使用隐
  • Android:如何以编程方式使活动窗口半透明?

    有没有办法以编程方式使活动窗口显示为半透明 出于我的目的 我无法使用静态 XML 资源 我尝试将背景资源设置为半透明颜色 但这只会使背景显示为纯黑色 把它写在你的活动课上 Window window this getWindow windo
  • 如何管理需要AsyncTask调用的不同任务

    我有一个外部库可以使用 它通过互联网与服务器进行通信 每当我需要从互联网获取一些信息时 Android 都会强制我使用异步任务 到目前为止没有问题 但是 我收到越来越多的任务来从互联网检索 以不同方式 数据 并且我不喜欢为每个调用增加不同的
  • 为什么我的 Julia 代码运行速度比 JavaScript 慢?

    最近 我对 Julia lang 很感兴趣 因为它声称是一种具有接近 C 性能的动态语言 然而 到目前为止我的经验并不好 至少在性能方面 我正在编写的应用程序需要随机访问特定的数组索引 然后将它们的值与其他特定的数组索引进行比较 经过多次迭
  • 返回 AJAX 调用数据的 JavaScript 函数 [重复]

    这个问题在这里已经有答案了 我想创建一个 JavaScript 函数 它返回 jQuery AJAX 调用的值 我想要这样的东西 function checkUserIdExists userid return ajax url theur
  • Spring 属性占位符不起作用

    我在 stackoverflow com 上读过类似的问题 但没有一个解决方案对我有帮助 我使用的配置如下 maven项目结构 这src main resources properties app properties file possi
  • angular.js 控制器作为使用 $template 缓存服务的语法模板绑定

    我之前已经使用过 Angular JS 但现在我在 Angular JS 中使用控制器作为语法 并且无法绑定模板 我的控制器代码 function angular module vkApp controller Feeds Feeds fu
  • 支持语音的 ASP.NET 应用程序

    我们正在开发一个 ASP NET Web 应用程序 该应用程序需要通过语音输入一些数据 用户可以使用普通用户界面输入一些数据 但是 我们需要一个附加功能 让他可以通过语音输入数据 我们可以修复语音命令 例如输入 value1 到 data1
  • Jooq、Spring 和 BoneCP 连接关闭两次错误

    我正在将 Spring 4 0 0 以及 jOOQ 3 2 0 和 BoneCP 0 8 0 用于 Web 应用程序 我的 PersistenceContext 配置与本指南相同 请浏览一下 代码有点太多 无法粘贴到此处 http www
  • 无法找到资源 ID - Android Gradle 插件 3.4.0

    当从多模块项目中的 Android Gradle Plugin 3 3 2 迁移到 3 4 0 并执行时connectedAndroidTest我看到一个致命的异常 Google Play 服务共享类StringResourceValueR
  • 循环遍历datagridview

    我的是一个Windows应用程序 包含名为 BOM 和 BOMSelected 的表单 BOM中有一个datagridview 其中包含checkbox列 当用户选择checkbox时 所选行应该在其他形式的datagridview中看到
  • 如何在 Laravel 5.5 中进行迁移?

    我创建了一个 Auth 项目拉拉维尔 5 5并创建了新的迁移 当我迁移时 我收到此错误消息 在 Connection php 第 647 行 SQLSTATE 42S01 Base table or view already exists
  • 安装 apk 文件时出现错误“软件包似乎已损坏”

    我遇到了一个奇怪的问题 将 Android Studio 从 2 3 3 更新到 3 0 后 我收到此错误 问题是当我尝试安装 apk 文件时 它说 应用程序未安装 该软件包似乎已损坏 我尝试过在调试版本和发布版本中生成 apk 并尝试安装
  • 有未提交的工作待处理。请在调用前提交或回滚

    我有一个批处理课程 public class BatchCreateGCalendars implements Database Batchable
  • 如何在Java中使用TLSV1或SSLV3进行第一次握手(Client Hello)?

    当我执行以下代码时 为什么第一次握手是SSLv2 而不是TLSv1或SSLv3 如何在Java中使用TLSV1或SSLV3进行第一次握手 String host www google com String url adsense sourc
  • 如果在 bash 中通过管道传输,使用 subprocess 和 xclip 的 Python 脚本会挂起

    我有一个 python 脚本 需要将一些值输出到 stdin 并将另一个字符串复制到剪贴板 我正在使用该模块subprocess执行xclip效用通过Popen像这样的东西 clip py import subprocess from su
  • 如何在 sqlalchemy 中配置故障转移

    sqlalchemy 中是否有一种方法可以让开发人员指定多个 mysql 主机来尝试连接 并且如果第一个主机连接失败 它将自动故障转移到第二个主机 我在 mysql 上有一个解决方案 使用名为MySQL 连接器 Python who s 连