MySQL -- 使用Python在不同服务器间进行数据库联接?

30 投票
3 回答
33281 浏览
提问于 2025-04-16 16:39

MySQL 中,我有两个不同的数据库——我们称它们为 AB

数据库 A 在服务器 server1 上,而数据库 B 在服务器 server2 上。

这两个服务器 {A, B} 是 物理上靠得很近,但它们在不同的机器上,并且连接的参数也不同(比如用户名、密码等都不一样)。

在这种情况下,能否将数据库 A 中的一个表和数据库 B 中的一个表进行连接(join)呢?

如果可以的话,我该如何在 python 中实现这个操作?(我正在使用 pythonMySQLDB 来分别与这两个数据库进行交互。)

3 个回答

3

不可以。你想要的那种连接是做不到的。不过,你可以试着把其中一个服务器的数据复制到另一个服务器上,来解决这个问题。

一个数据集是由一个MySQL数据库控制的,另一个数据集则是由另一个MySQL数据库控制的。查询只能在其中一个MySQL服务器上处理。

如果你在第一个服务器上创建第二个数据库的副本,或者反过来(最好是选择更新最少的那个),你可以设置复制功能,让副本保持最新。这样,你就能按照你的需求来运行查询了。

4

这很简单——从一个服务器上选择数据,从另一个服务器上选择数据,然后用Python把它们合在一起。如果你想用SQL查询中的JOIN,可以把两个服务器的结果放到本地的SQLite数据库里的两个不同表中,然后写一个带JOINSELECT查询。

22

试着使用 FEDERATED 存储引擎

解决方法:你可以使用其他数据库管理系统(DBMS)来在两个数据库之间获取数据,比如在 MS SQL Server 中使用 链接服务器(可以参考 sp_addlinkedserver 存储过程)。根据文档的说法:

链接服务器可以让你对分布式的、不同类型的数据源进行查询。

撰写回答