рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ Enums рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рдкрд┐рдЫрд▓реЗ рд╕рд╛рд▓, рдкрд╛рдпрдерди рд╕рдореБрджрд╛рдп рдЖрдЦрд┐рд░рдХрд╛рд░ рдПрдирдо рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реЛ рдЧрдпрд╛ред рдЗрд╕реА рдкреАрдИрдкреА 435 рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЬрдЧрд░ 3.4 рдореЗрдВ рд╣реИред

рдЧрд░рдорд╛рдЧрд░рдо рдмрд╣рд╕ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЕрдкрдиреА рдмрд╛рдЗрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЗрд╕рдореЗрдВ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬреЛрдбрд╝ рджреА рдЧрдИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рдереАред

рдлрд┐рд▓рд╣рд╛рд▓, рдкреНрд░рдпреЛрдЧ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдП рд╣реИрдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдиреЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЦреБрдж рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдпрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЬрдм рд╣рдо рдлреЙрд░реНрдо <name, value> рдХреЗ рд╕рдВрдмрдВрдз рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕реА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдПрдХ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рдкрд╛рда, рднрд╛рдИ-рдмрд╣рди рдХреЗ рд▓рд┐рдВрдХ, рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдВрдХред рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдмрд╛рдбрд╝ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдХрд┐ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ - рд╕рдм рдХреЗ рдмрд╛рдж рд╢рд╛рдирджрд╛рд░ рд╕рдВрд╕реНрдерд╛рдПрдВред

рдЗрд╕рд▓рд┐рдП, рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдХрд░, рдореИрдВрдиреЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдгрдирд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдкреВрд░реНрдг рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рдЙрд╕реА рд╕рдордп рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛:


рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдРрд╕реА рдЪреАрдЬрд╝ рдорд┐рд▓реА (рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рд▓рдВрдмреЗ "рдХреИрдирд╡рд╛рд╕" рдХреЛ рди рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛:)

######################## #   ######################## from rels import Column, Relation # Enum  EnumWithText     #    rels.Enum  rels.EnumWithText #        class Enum(Relation): #    name = Column(primary=True) #    value = Column(external=True) #    #  тАФ     -  # ,      class EnumWithText(Enum): text = Column() class SOME_CONSTANTS(Enum): #    records = ( ('NAME_1', 1), #      ('NAME_2', 2)) class SOME_CONSTANTS_WITH_TEXT(EnumWithText): #     records = ( ('NAME_1', 1, 'constant 1'), ('NAME_2', 2, 'constant 2')) #    #    SOME_CONSTANTS.NAME_1.name == 'NAME_1' # True SOME_CONSTANTS.NAME_1.value == 1 # True #     ┬л┬╗  SOME_CONSTANTS(1) == SOME_CONSTANTS.NAME_1 # True #  SOME_CONSTANTS.NAME_2 == SOME_CONSTANTS.NAME_2 # True SOME_CONSTANTS.NAME_2 != SOME_CONSTANTS.NAME_1 # True #          SOME_CONSTANTS.NAME_2.is_NAME_1 # False SOME_CONSTANTS.NAME_2.is_NAME_2 # True #    тАФ  , #          SOME_CONSTANTS.NAME_2 != SOME_CONSTANTS_WITH_TEXT.NAME_2 # True SOME_CONSTANTS.NAME_1 != SOME_CONSTANTS_WITH_TEXT.NAME_1 # True #  тАФ    class EXTENDED_CONSTANTS(SOME_CONSTANTS_WITH_TEXT): #      records = ( ('NAME_3', 3, 'constant 3'), ) #     ######################## #  ######################## class ENUM(Relation): name = Column(primary=True) #       .index_name value = Column(external=True) #       .index_value text = Column(unique=False, index_name='by_key') #      records = ( ('NAME_1', 0, 'key_1'), ('NAME_2', 1, 'key_2'), ('NAME_3', 2, 'key_2'), ) #     ,       ENUM.index_name # {'NAME_1': ENUM.NAME_1, 'NAME_2': ENUM.NAME_2, 'NAME_3': ENUM.NAME_3} #      ,        ENUM.by_key # {'key_1': [ENUM.NAME_1], 'key_2': [ENUM.NAME_2, ENUM.NAME_3]} ######################## #   ######################## #  ,     class DESTINATION_ENUM(Relation): name = Column(primary=True) val = Column() records = ( ('STATE_1', 'value_1'), ('STATE_2', 'value_2') ) #  ,    class SOURCE_ENUM(Relation): name = Column(primary=True) val = Column() rel = Column(related_name='rel_source') records = ( ('STATE_1', 'value_1', DESTINATION_ENUM.STATE_1), ('STATE_2', 'value_2', DESTINATION_ENUM.STATE_2) ) #    DESTINATION_ENUM.STATE_1.rel_source == SOURCE_ENUM.STATE_1 # True DESTINATION_ENUM.STATE_2 == SOURCE_ENUM.STATE_2.rel # True 

рдЕрд▓рдЧ рд╕реЗ, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдФрд░ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реНрд░реЛрддреЛрдВ, рдЬреИрд╕реЗ рд╕реНрдкреНрд░реИрдбрд╢реАрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

рдЧреАрдердм рдкрд░ рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдФрд░ рд╡рд┐рд╕реНрддреГрдд рджрд╕реНрддрд╛рд╡реЗрдЬ

рдкреАрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкрд╛рдЗрдерди 2.7 рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдХрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рддреАрд╕рд░реЗ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

Source: https://habr.com/ru/post/In208066/


All Articles