2012-09-10 15 views
10

Şirketimin farklı bölümleri için bir ürün veritabanı sistemi oluşturduğumu söylerim. Her departmanın çeşitli nedenlerle kendi PostgreSQL-databse-instance'ı vardır. Veritabanlarının şemaları aynıdır, ancak bunların içindeki veriler değildir. Bu sistemlerin her biri için bir iş mantığı (alakasız) yapan bir Python uygulaması var. Her Python uygulaması kendi veritabanlarına SQLAlchemy aracılığıyla erişir.SQLAlchemy, birden çok veritabanına sorunsuz bir şekilde erişmek için nasıl kullanılır?

Tüm bu veri tabanlarındaki tüm verilere erişebilen bir Denetleyici Sistem oluşturmak istiyorum (okuma işlevi). enter image description here

Ben sqlalchemy ile yapabilir miyiz: Burada

düşündüğüm şeyin bir örnektir? Eğer öyleyse, bu tür bir problem için en iyi yaklaşım hangisidir?

cevap

10

Bunu SQLAlchemy ile yapabileceğinizden emin olun.

Yapmanız gereken tek şey, her birinin kendi oturum yapımcısı olan farklı bağlantı motorları yaratmaktır. SQLAlchemy'daki hiçbir şey sizi bir seferde sadece bir veritabanına sınırlar.

engines = [] 
sessions = [] 
for dbconninfo in databases: 
    engine = create_engine(dbconninfo) 
    engines.append(engine) 
    sessions.append(sessionmaker(bind=engine)()) 

Sen sorguları çalıştırmak için her oturumu kullanabilirsiniz, sonuç nesneleri değişikliklerin doğru veritabanına geri akmasını, böylece onları üretilen oturuma eklenir. Örneğin, bir nesneyi bir oturumdan diğerine birleştirirseniz ne olacağını görmek için session documentation'u ayrıntılı olarak inceleyin.

+0

Ve tüm db'leri aynı anda sorgulayabilir miyim? – AME

+1

@AME: Sonuçları ayrı tuttuğunuz sürece; Bir oturumdan diğerine sonuç eklemeyi denemeyin. –

İlgili konular