ما هي الطريقة الأكثر كفاءة لإلغاء سمات الفصل مع صف من استعلام قاعدة البيانات؟

StackOverflow https://stackoverflow.com/questions/2542887

  •  23-09-2019
  •  | 
  •  

سؤال

تتطلع إلى الحصول على استعلام قاعدة بيانات قم بتعيين جميع متغيرات المثيل في فئة:

مثال:

def populate(self, if):
    #Perform mysql query

    self._name = row['name']
    self._email = row['email']
    ...

ما هي أسرع طريقة للقيام بذلك؟ أم أن هذا غير موصى به (مع نهج أفضل)؟

هل كانت مفيدة؟

المحلول

  • إنه يجعل الكود الخاص بك هو الأكثر قابلية للقراءة ويمكن التنبؤ به للقيام بذلك يدويًا مثل هذا. وبهذه الطريقة ، أنت تعرف بالضبط ما هي السمات الموجودة وما هي السمات التي لا يمكن بسهولة.

  • يمكنك استخدام setattr لأتمتة أطنان من هذه.

    طريقة واحدة لطيفة إلى حد ما هي تحديد قائمة attributes = ['name', 'email'...] كسممة فئة ثم للقيام

    for name in self.attributes:
        setattr(self, "_" + name, row[name])
    

    يمكنك أيضًا الحصول على السمات من الاستعلام نفسه ، ولكن هذا سيتغير اعتمادًا على استعلامك (خاصة إذا كنت تستخدم SELECT * أو أي شيء من هذا القبيل) وتغيير قاعدة البيانات الخاصة بك.

  • ألاحظ أن هذه السمات جميعها تبرز. إذا كان هذا شيئًا داخليًا بحتًا ، ففكر في ما إذا كانت السمة بدلاً من أن تكون الاستعلام تؤدي إلى نفسه أو تخزين القولون لن يناسب احتياجاتك بشكل أفضل. بشكل عام ، من المفترض أن تكون السمات أشياء ثابتة إلى حد ما.

  • أسمعنا هو أجمل mysqldb

نصائح أخرى

ينظر الى Sqlalchemy إنه تجريد قاعدة البيانات الأكثر شعبية لبيثون.
إذا كنت تحب نمط السجل النشط حقًا ، فهناك طبقة يمكنك وضعها فوقها إكسير.

أستخدم SqlalChemy لأنه تجريد قاعدة بيانات لطيفة ويسمح لي بتبديل قواعد البيانات. يمكنني استخدام SQLite في الذاكرة للاختبارات الخاصة بي ويمكنني أن أسقطه في الكود الخاص بي باستخدام SQLAlchemy.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top