2012-01-20 53 views
5

Tôi muốn kết nối với hai cơ sở dữ liệu bằng cách sử dụng Python và, sau này, sử dụng các bảng từ cả hai cơ sở dữ liệu. Tôi có thể làm cái này như thế nào? Mã sau có chính xác không?Kết nối với hai cơ sở dữ liệu

con = mdb.connect(host=MY_HOST, user=MY_USER, passwd=MY_PASS, db1=MY_DB1, db2=MY_DB2) 
+1

Bạn có ý nghĩa gì khi "sử dụng bảng từ cả hai cơ sở dữ liệu". Bạn có muốn tham gia cùng họ trong một truy vấn không? Đó là không thể. –

+0

@Tichodroma Có, tôi muốn tham gia tableA từ database1 và tableB từ database2, cả hai cơ sở dữ liệu trên cùng một máy chủ. Có thể không? – manxing

+0

@manxing đúng vậy. – greut

Trả lời

13

Nếu bạn không chỉ định cơ sở dữ liệu trong cuộc gọi connect, bạn có thể viết truy vấn đối với nhiều cơ sở dữ liệu cùng một lúc. documentation cho biết rằng không cần phải có db.

db = _mysql.connect('localhost', 'user', 'passwd') 

sau đó

SELECT u.*, i.* FROM db1.users u LEFT JOIN db2.items i ON u.id = i.user_id 

Nhưng nó sẽ chỉ làm việc nếu hai cơ sở dữ liệu đang ở trên cùng một máy chủ.

+0

là có một đạt được trong việc làm theo cách này so với câu trả lời của tôi? –

+2

một kết nối so với hai kết nối. – greut

+0

Tại sao một trang web tốt hơn hai? hiệu suất, bộ nhớ, dễ sử dụng hoặc chỉ là hương vị tốt của bạn? –

7

Chỉ cần chắc hai kết nối riêng biệt

con1 = mdb.connect (host=MY_HOST, user=MY_USER, passwd=MY_PASS, db1=MY_DB1) 
con2 = mdb.connect (host=MY_HOST2, user=MY_USER2, passwd=MY_PASS2, db2=MY_DB2) 

và sử dụng chúng một cách độc lập giống như bạn khi sử dụng một cơ sở dữ liệu.

Để hoàn thành câu trả lời: "Mã sau có đúng không? ...". Không, cú pháp đó sẽ không thực hiện.

0

Bạn có hai khả năng:

1) Lấy dữ liệu vào một DataFrame gấu trúc và sử dụng nó để tạo bảng trong máy chủ thứ hai.

2) BCP ra dữ liệu từ máy chủ1 và tải nó vào máy chủ thứ hai

+0

Vui lòng sử dụng định dạng phù hợp. – SteveFest

Các vấn đề liên quan