आप sqlalchemy.types.TypeDecorator
उपवर्गीकरण क्रमबद्धता और पाठ अक्रमांकन को संभालने के लिए एक कस्टम प्रकार बना सकते हैं।
कार्यान्वयन
import json
import sqlalchemy
from sqlalchemy.types import TypeDecorator
SIZE = 256
class TextPickleType(TypeDecorator):
impl = sqlalchemy.Text(SIZE)
def process_bind_param(self, value, dialect):
if value is not None:
value = json.dumps(value)
return value
def process_result_value(self, value, dialect):
if value is not None:
value = json.loads(value)
return value
उदाहरण उपयोग प्रकार दिखाई देंगे:
class SomeModel(Base):
__tablename__ = 'the_table'
id = Column(Integer, primary_key=True)
json_field = Column(TextPickleType())
s = SomeEntity(json_field={'baked': 'beans', 'spam': 'ham'})
session.add(s)
session.commit()
यह an example in the SQLAlchemy docs में उल्लिखित है, जो भी पता चलता है कि शब्दकोश के उत्परिवर्तन के ट्रैक करने के लिए कैसे।
यह दृष्टिकोण केवल PickleType
की pickler
तर्क को मान के रूप में json
गुजर एक और जवाब पर उसकी टिप्पणी में सही ढंग से काम नहीं करेगा, AlexGrönholm points out के रूप में जबकि, पायथन के सभी संस्करणों के लिए काम करना चाहिए।
आपका उत्तर पूरा नहीं हुआ है, इसलिए स्वीकार नहीं कर सकता। इसमें "स्वीकार्य उत्तर" का भी संदर्भ है जो किसी भी प्रयास को किसी भी प्रयास को बदलता है और किसी विशेष उत्तर को बदलता है। कृपया एक सही उत्तर के साथ शुरू करें, और (यदि आपको जरूरी है) तो अंत में दूसरों ने क्या गलत किया है। –
@ जोनासबस्ट्रोम मेला पर्याप्त है, मैंने वर्तमान में स्वीकृत उत्तर के संदर्भ को हटा दिया है और उदाहरण को थोड़ा सा – karlson
बढ़ाया है जब मैंने इसे पहली बार सेट अप किया था। हालांकि मेरे मॉडल में एक नया फ़ील्ड जोड़ने के बाद ('product_count = db.Column (db.Integer)') यह मुझे mysql में परिवर्तनों को माइग्रेट करते समय निम्न त्रुटि देता है: 'NameError: name 'TextPickleType' को परिभाषित नहीं किया गया है – iamlolz