挑戰: 使用Python 在駐留在不同伺服器上的兩個MySQL 資料庫之間執行資料庫聯接MySQLDB。
解決方案:
要建立與兩個資料庫的連接,請使用單獨的連接參數為每個伺服器建立 MySQLDB 連接。但是,後續的 join 操作無法直接使用 MySQLDB 進行,因為它缺乏跨伺服器 join 功能。
替代方法:
FEDERATED 儲存引擎:
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
conn_external = pymssql.connect(...)
cursor_external.execute("""
cursor_external.execute("""
SELECT *
FROM linked_server_A.database_A.dbo.local_table
INNER JOIN linked_server_B.database_B.dbo.remote_table
""")
結果=cursor_external.fetchall()以上是如何使用 MySQL 從 Python 執行遠端伺服器上的資料庫間連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!