首页 >数据库 >mysql教程 >如何使用 MySQL 从 Python 执行远程服务器上的数据库间连接?

如何使用 MySQL 从 Python 执行远程服务器上的数据库间连接?

Barbara Streisand
Barbara Streisand原创
2024-11-27 13:57:10368浏览

How to Perform Inter-Database Joins on Remote Servers from Python Using MySQL?

MySQL:通过 Python 在远程服务器上进行数据库间联接

挑战: 使用 Python 在驻留在不同服务器上的两个 MySQL 数据库之间执行数据库联接MySQLDB。

解决方案:

要建立与两个数据库的连接,请使用单独的连接参数为每个服务器创建 MySQLDB 连接。但是,后续的 join 操作无法直接使用 MySQLDB 进行,因为它缺乏跨服务器 join 功能。

替代方法:

FEDERATED Storage Engine:
MySQL 提供了 FEDERATED 存储引擎,允许您像访问本地数据库一样访问远程数据库中的表。使用以下语法创建联合表:

CREATE FEDERATED TABLE remote_table (
  column_1 data_type,
  column_2 data_type,
  ...
) ENGINE=FEDERATED
CONNECTION='mysql://username:password@server2/database_B';

链接服务器解决方法:

如果使用 MySQL 不可行,您可以使用另一个支持链接的 DBMS服务器,例如 Microsoft SQL Server。在这里,您可以创建一个链接服务器从数据库 B 连接到数据库 A,并使用中间件 DBMS 中的查询执行连接。

Python 中的实现:

取决于根据您选择的方法:

联邦引擎:

import MySQLdb

# Create a connection to the local database
conn_local = MySQLdb.connect(...)

# Create a cursor for the local connection
cursor_local = conn_local.cursor()

# Execute a query to join the local table with the remote table
cursor_local.execute("""
  SELECT *
  FROM local_table
  INNER JOIN remote_table
  ON local_table.id = remote_table.id
""")

result = cursor_local.fetchall()

**Linked Servers Workaround:**

导入 pymssql

建立与外部 DBMS 的连接

conn_external = pymssql.connect(...)

执行查询以从两者检索数据数据库

cursor_external.execute("""
SELECT *
FROM linked_server_A.database_A.dbo.local_table
INNER JOIN linked_server_B.database_B.dbo.remote_table
ON linked_server_A.database_A。 dbo.local_table.id = linked_server_B.database_B.dbo.remote_table.id
""")

结果=cursor_external.fetchall()

以上是如何使用 MySQL 从 Python 执行远程服务器上的数据库间连接?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn