মাইএসকিউএল এনইউএম এর মানগুলির নামের স্থান থাকলে পাইথন এনাম বৈশিষ্ট্যগুলি কীভাবে সংজ্ঞায়িত করবেন?


10

আমার কাছে পাইথন Enumক্লাসটি রয়েছে:

from enum import Enum
class Seniority(Enum):
    Intern = "Intern"
    Junior_Engineer = "Junior Engineer"
    Medior_Engineer = "Medior Engineer"
    Senior_Engineer = "Senior Engineer"

এমওয়াইএসকিউএল ডাটাবেসে সিনিয়রটি এনইউএম কলামের মান "ইন্টার্ন", "জুনিয়র ইঞ্জিনিয়ার", "মধ্যম ইঞ্জিনিয়ার", "সিনিয়র ইঞ্জিনিয়ার" রয়েছে।

সমস্যাটি হ'ল আমি একটি ত্রুটি পেয়েছি:

LookupError: "Junior Engineer" is not among the defined enum values

এই ত্রুটিটি ঘটেছে যখন আমি কোয়েরিকে যেমন কল করি:

UserProperty.query.filter_by(full_name='John Doe').first()

seniorityUserPropertyমডেল এনাম সম্পত্তি হয় ।

class UserProperty(db.Model):
   ...
   seniority = db.Column(db.Enum(Seniority), nullable=True)
   ...

এই শ্রেণীর জন্য আমি প্যাকেজটি ব্যবহার করে marshmallow Schemaএবং EnumFieldথেকে স্কিমা ক্লাসটি সংজ্ঞায়িত করেছি marshmallow_enum:

class UserPropertySchema(Schema):
    ...
    seniority = EnumField(Seniority, by_value=True)
    ...

এই পরিস্থিতিতে কী করবেন, কারণ আমি স্থান সহ অজগর শ্রেণীর সম্পত্তির নামটি সংজ্ঞায়িত করতে পারি না। কীভাবে পাইথনকে সম্পত্তির নামের পরিবর্তে সংজ্ঞায়িত বৈশিষ্ট্যের মান ব্যবহার করতে বাধ্য করা যায়?


2
দেখি এই সাহায্য notinventedhere.org/articles/python/...
Shenanigator

উত্তর:


3

যেমন শেনানিগেটর আমার প্রশ্নের মন্তব্যে বলেছিলেন, আমরা এই সমস্যাটি সমাধান করার জন্য এলিয়াস ব্যবহার করতে পারি।

Seniority = Enum(
    value='Seniority',
    names=[
        ('Intern', 'Intern'),

        ('Junior Engineer', 'Junior Engineer'),
        ('Junior_Engineer', 'Junior_Engineer'),

        ('Medior Engineer', 'Medior Engineer'),
        ('Medior_Engineer', 'Medior_Engineer'),

        ('Senior Engineer', 'Senior Engineer'),
        ('Senior_Engineer', 'Senior_Engineer')
    ]
)

2

একটি তালিকা হ'ল প্রচুর প্রতীকী নাম (ব্যক্তি) এক ধরণের, স্থির গুণাবলীর একটি to একটি নির্দিষ্টকরণের অভ্যন্তরে, ব্যক্তিকে চরিত্র অনুসারে দেখা যায় এবং গণনাটি নিজেই পুনরাবৃত্তি হতে পারে।

মডিউল বিষয়বস্তু

এই মডিউলটি চারটি স্পেসিফিকেশন ক্লাসকে চিহ্নিত করেছে যা নাম এবং গুণাবলীর লক্ষণীয় ব্যবস্থা চিহ্নিত করতে ব্যবহার করা যেতে পারে: এনুম, ইনটেনাম, পতাকা এবং ইন্টারফ্লেগ। এটি একইভাবে একটি সাজসজ্জা, এক ধরণের () এবং একটি সহায়ক, অটো বৈশিষ্ট্যযুক্ত।

ক্লাস enum.Enum

তালিকাভুক্ত ধ্রুবক তৈরির জন্য বেস শ্রেণি। অন্য বিকাশের ব্যাকরণের জন্য বিভাগের কার্যকরী এপিআই দেখুন।

ক্লাস enum.IntEnum

তালিকাভুক্ত ধ্রুবকগুলি তৈরি করার জন্য বেস ক্লাস যা অতিরিক্তভাবে ইনট্রের সাবক্লাস হয়।

ক্লাস enum.IntFlag

তালিকাভুক্ত কনস্ট্যান্ট তৈরির জন্য বেস ক্লাস যা বিটওয়াইস অ্যাডমিনিস্ট্রেটরদের তাদের ইনফ্ল্যাগ অংশগ্রহণ না হারিয়ে ব্যবহার করে একত্রীকরণ করা যেতে পারে। ইনফ্লেগ ব্যক্তিরা অতিরিক্তভাবে ইনটাক্টের সাবক্লাস হয়।

ক্লাস enum.Flag

তালিকাভুক্ত কনস্ট্যান্ট তৈরির জন্য বেস ক্লাস যা তাদের পতাকা নিবন্ধন হারানো ছাড়াই বিটওয়াইস কার্যগুলি ব্যবহার করে একীভূত করা যেতে পারে।

enum.unique ()

এনাম ক্লাস ডেকরেটার যা গ্যারান্টি দেয় কেবল একটি নাম যে কোনও একটি মূল্যের সাথে আবদ্ধ।

ক্লাস enum.auto

উদাহরণগুলি এনুম ব্যক্তিদের জন্য উপযুক্ত উত্সাহ সহ প্রেরণ করা হয়। 1 থেকে মূল্যবান সূচনা

3.6 সংস্করণে নতুন: পতাকা, ইন্টফ্ল্যাগ, এ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.