विषय पर बढ़ें

आंतरिक संरचना

परिभाषा के दौरान नमूना में परिभाषित विशेष मापदंडों (तालिका नाम, मेटाडेटा, आदि) के अलावा, नमूना आपको उपयोगी आंतरिक संरचनाएं भी प्रदान करता है।

त्रिकोण नमूना

सभी नमूना कक्षाएं dसे विरासत में मिली हैं। BaseModel, ताकि आप dमॉडल के सभी सामान्य गुणों तक पहुंच सकें।

उदाहरण के लिए, एक dनमूना फ़ील्ड को सूचीबद्ध करने के लिए, आप कर सकते हैं:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import databases
import ormar
import sqlalchemy

database = databases.Database("sqlite:///db.sqlite")
metadata = sqlalchemy.MetaData()


class Course(ormar.Model):
    ormar_config = ormar.OrmarConfig(
        database=database,
        metadata=metadata,
    )

    id: int = ormar.Integer(primary_key=True)
    name: str = ormar.String(max_length=100)
    completed: bool = ormar.Boolean(default=False)


print(Course.model_fields)
"""
Will produce:
{'id':        Field(name='id', 
                         type=Optional[int], 
                         required=False, 
                         default=None),
 'name':      Field(name='name', 
                         type=Optional[str], 
                         required=False, 
                         default=None),
'completed':  Field(name='completed', 
                         type=bool, 
                         required=False, 
                         default=False)}
"""

!!!टिप कृपया ध्यान दें कि प्राथमिक कुंजी आईडी फ़ील्ड वैकल्पिक है क्योंकि डिफ़ॉल्ट रूप से, पूर्णांक प्राथमिक कुंजी ऑटो-वेतन वृद्धि में ट्रू पर सेट हैं।

!!!जानकारी अधिक विकल्पों के लिए, आधिकारिक dप्रलेखन पर जाएं।

कीमिया घड़ी

स्वचालित रूप से बनाई गई sqlalchतालिका तक पहुंचने के लिए, आप Mo.ormar \ _ config का उपयोग कर सकते हैं

उदाहरण के लिए, तालिका स्तंभ को सूचीबद्ध करने के लिए, आप कर सकते हैं:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import databases
import ormar
import sqlalchemy

DATABASE_URL = "sqlite:///test.db"

ormar_base_config = ormar.OrmarConfig(
    database=databases.Database(DATABASE_URL), metadata=sqlalchemy.MetaData()
)


class Course(ormar.Model):
    ormar_config = ormar.OrmarConfig(
        tablename="courses",
        database=databases.Database(DATABASE_URL),
        metadata=sqlalchemy.MetaData(),
    )

    id: int = ormar.Integer(primary_key=True)
    name: str = ormar.String(max_length=100)
    completed: bool = ormar.Boolean(default=False)


print(Course.ormar_config.table.columns)
"""
Will produce:
ImmutableColumnCollection(courses.id, courses.name, courses.completed)
"""

!!!टिप आप se.ormar \ _ config में तालिका प्राथमिक कुंजी नाम तक पहुंच सकते हैं

!!!जानकारी अधिक विकल्पों के लिए, आधिकारिक sqlalchemistry-metadata पर जाएं।

क्षेत्र परिभाषा

ormar फ़ील्ड तक पहुँचने के लिए, आप उपयोग कर सकते हैं Model.ormar_config.model_fields गुंजाइश

उदाहरण के लिए, तालिका नमूना फ़ील्ड को सूचीबद्ध करने के लिए, आप कर सकते हैं:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import pprint

import databases
import ormar
import sqlalchemy

database = databases.Database("sqlite:///db.sqlite")
metadata = sqlalchemy.MetaData()


class Course(ormar.Model):
    ormar_config = ormar.OrmarConfig(
        database=database,
        metadata=metadata,
    )

    id: int = ormar.Integer(primary_key=True)
    name: str = ormar.String(max_length=100)
    completed: bool = ormar.Boolean(default=False)


pprint.pp({x: v.__dict__ for x, v in Course.ormar_config.model_fields.items()})
"""
Will produce:
{'id': {'__type__': <class 'int'>,
        '__pydantic_type__': <class 'int'>,
        '__sample__': 0,
        'related_name': None,
        'column_type': Integer(),
        'constraints': [],
        'name': 'id',
        'db_alias': None,
        'primary_key': True,
        'autoincrement': True,
        'nullable': True,
        'sql_nullable': False,
        'index': False,
        'unique': False,
        'virtual': None,
        'is_multi': None,
        'is_relation': None,
        'is_through': False,
        'through_relation_name': None,
        'through_reverse_relation_name': None,
        'skip_reverse': False,
        'skip_field': False,
        'owner': <class '__main__.Course'>,
        'to': None,
        'to_pk_only': None,
        'through': None,
        'self_reference': False,
        'self_reference_primary': None,
        'orders_by': None,
        'related_orders_by': None,
        'encrypt_secret': None,
        'encrypt_backend': <EncryptBackends.NONE: 0>,
        'encrypt_custom_backend': None,
        'ormar_default': None,
        'server_default': None,
        'comment': None,
        'represent_as_base64_str': False,
        'minimum': None,
        'maximum': None,
        'multiple_of': None,
        'ge': None,
        'le': None},
 'name': {'__type__': <class 'str'>,
          '__pydantic_type__': <class 'str'>,
          '__sample__': 'string',
          'related_name': None,
          'column_type': String(length=100),
          'constraints': [],
          'name': 'name',
          'db_alias': None,
          'primary_key': False,
          'autoincrement': False,
          'nullable': False,
          'sql_nullable': False,
          'index': False,
          'unique': False,
          'virtual': None,
          'is_multi': None,
          'is_relation': None,
          'is_through': False,
          'through_relation_name': None,
          'through_reverse_relation_name': None,
          'skip_reverse': False,
          'skip_field': False,
          'owner': <class '__main__.Course'>,
          'to': None,
          'to_pk_only': None,
          'through': None,
          'self_reference': False,
          'self_reference_primary': None,
          'orders_by': None,
          'related_orders_by': None,
          'encrypt_secret': None,
          'encrypt_backend': <EncryptBackends.NONE: 0>,
          'encrypt_custom_backend': None,
          'ormar_default': None,
          'server_default': None,
          'comment': None,
          'represent_as_base64_str': False,
          'max_length': 100,
          'min_length': None,
          'regex': None},
 'completed': {'__type__': <class 'bool'>,
               '__pydantic_type__': <class 'bool'>,
               '__sample__': True,
               'related_name': None,
               'column_type': Boolean(),
               'constraints': [],
               'name': 'completed',
               'db_alias': None,
               'primary_key': False,
               'autoincrement': False,
               'nullable': True,
               'sql_nullable': True,
               'index': False,
               'unique': False,
               'virtual': None,
               'is_multi': None,
               'is_relation': None,
               'is_through': False,
               'through_relation_name': None,
               'through_reverse_relation_name': None,
               'skip_reverse': False,
               'skip_field': False,
               'owner': <class '__main__.Course'>,
               'to': None,
               'to_pk_only': None,
               'through': None,
               'self_reference': False,
               'self_reference_primary': None,
               'orders_by': None,
               'related_orders_by': None,
               'encrypt_secret': None,
               'encrypt_backend': <EncryptBackends.NONE: 0>,
               'encrypt_custom_backend': None,
               'ormar_default': False,
               'server_default': None,
               'comment': None,
               'represent_as_base64_str': False}}
"""

!!!जानकारी ध्यान दें कि नमूना पर संग्रहीत फ़ील्ड कक्षाएं हैं, उदाहरण नहीं।

1
2
3
4
5
6
7
इसलिए यदि आप केवल नमूना फ़ील्ड प्रिंट करते हैं तो आपको मिलेगा:

`{'id': <class 'ormar.fields.model_fields.Integer'>, `

  `'name': <class 'ormar.fields.model_fields.String'>, `

  `'completed': <class 'ormar.fields.model_fields.Boolean'>}`