SQLAlchemy sınıflarını, zaman içinde sayı olarak artacak çok sayıda harici veri kaynağına erişmek için oluşturmamız gerekiyor. Temel ORM modellerimiz için bildirimsel tabanı kullanıyoruz ve autoload = otomatik olarak eşleştirmeyi oluşturmak için yeni ORM sınıflarını manuel olarak belirleyebileceğimizi biliyorum.SQLAlchemy'de Dinamik Sınıf Oluşturma
class MyObject(Base):
__tablename__ = 'my_internal_table_name'
__table_args__ = {'autoload':True}
Biz istemiyoruz: Bu dinamik gibi bir şeye dönüştürüyor
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
stored={}
stored['tablename']='my_internal_table_name'
stored['objectname']='MyObject'
ve:
sorun dinamik olarak alarak böyle bir şey onları üretmek mümkün olması gerektiğidir bir bağlantı açmak, sorguları gerçekleştirmek ve sonra bağlantıyı kapatmak için gerekli olandan daha uzun sürecek sınıflar. Bu nedenle, ideal olarak, "saklanan" değişken içerisindeki öğeleri bir veri tabanına koyabilir ve bunları gerektiği gibi çekebiliriz. Diğer zorluk, nesne isminin (ör. "MyObject") farklı bağlantılarda kullanılabilmesidir, bu yüzden bunu bir kez tanımlayamaz ve etrafta tutamazız.
Bunun nasıl gerçekleştirilebileceğine dair herhangi bir öneri çok takdir edilecektir. Dinamik 3-argument call to type
kullanarak MyObject
oluşturabilir
çocuk ... i aptal hissediyorum. Böyle basit bir çözüm. Tip yönteminin çok güçlü olduğunu anlamadım. o SQLAlchemy dahil edilebilir, böylece biraz küresel alan nesne adını koymak için bir çözüm modifiye direkt olarak sorgular: globalsi() [saklanan [ 'ObjectName']] = tipi (depolanmış [ 'ObjectName'], (Base,), mydict) Teşekkürler ... harika çözüm. – PlaidFan
Aptal hissetme! Bu hileyi, başkalarını SO'da kullandığını izleyerek öğrendim. Şimdi de hile biliyorsunuz ve arkadaşlarınızı da vay canına geçirebilirsiniz. :) – unutbu