मैं एक बड़े बड़े कोड बेस पर काम कर रहा हूं जिसे sqlalchemy.ext.declarative
का उपयोग करके कार्यान्वित किया गया है, और मुझे कक्षाओं में से किसी एक को एक धर्मार्थ संपत्ति जोड़ने की आवश्यकता है। मुझे जो चाहिए वह this question जैसा है, लेकिन एक घोषणात्मक फैशन में है। क्या SQLAlchemy में अधिक ज्ञान वाले किसी को मुझे एक उदाहरण दे सकता है? अग्रिम धन्यवाद ...घोषणात्मक SQLAlchemy में टैग का शब्दकोश?
उत्तर
घोषणात्मक चीजों को परिभाषित करने का एक और तरीका है। वस्तुतः आप अलग-अलग वातावरण के साथ समाप्त होते हैं, यदि आपने अलग मैपिंग का उपयोग किया है।
चूंकि मैंने दूसरे प्रश्न का उत्तर दिया, इसलिए मैं इसे भी आजमाउंगा। आशा है कि यह अधिक upvotes देता है;)
ठीक है, पहले हम कक्षाओं
from sqlalchemy import Column, Integer, String, Table, create_engine
from sqlalchemy import orm, MetaData, Column, ForeignKey
from sqlalchemy.orm import relation, mapper, sessionmaker
from sqlalchemy.orm.collections import column_mapped_collection
from sqlalchemy.ext.associationproxy import association_proxy
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('sqlite:///:memory:', echo=True)
Base = declarative_base(bind=engine)
class Note(Base):
__tablename__ = 'notes'
id_item = Column(Integer, ForeignKey('items.id'), primary_key=True)
name = Column(String(20), primary_key=True)
value = Column(String(100))
def __init__(self, name, value):
self.name = name
self.value = value
class Item(Base):
__tablename__ = 'items'
id = Column(Integer, primary_key=True)
name = Column(String(20))
description = Column(String(100))
_notesdict = relation(Note,
collection_class=column_mapped_collection(Note.name))
notes = association_proxy('_notesdict', 'value', creator=Note)
def __init__(self, name, description=''):
self.name = name
self.description = description
Base.metadata.create_all()
अब परिभाषित के एक परीक्षण करते हैं:
Session = sessionmaker(bind=engine)
s = Session()
i = Item('ball', 'A round full ball')
i.notes['color'] = 'orange'
i.notes['size'] = 'big'
i.notes['data'] = 'none'
s.add(i)
s.commit()
print i.notes
मैं:
{u'color': u'orange', u'data': u'none', u'size': u'big'}
आइए अब नोट्स टेबल की जांच करें ...
for note in s.query(Note):
print note.id_item, note.name, note.value
मैं:
1 color orange
1 data none
1 size big
यह काम करता है !! : डी
धन्यवाद @nosklo! –
मुझे एक 'sqlalchemy.exceptions मिल रहा है। कोई संदर्भ नहीं हैटेबल त्रुटि: तालिका' आइटम 'नहीं मिल सका जिसके साथ एक विदेशी कुंजी उत्पन्न करने के लिए –
इसे ठीक किया गया है! 'Note.id_item' से' ForeignKey ('items.id') 'को हटा देना था और 'नोट .__ तालिका __। Append_constraint (ForeignKeyConstraint ([id_item'], ['item.id']), ['item.id']) को जोड़ने के बाद' 'की घोषणा के बाद 'Item'। 'Item.name' में 'नोट .__ तालिका __। C.name' के साथ 'Note.name' को' item._notesdict' में भी बदलना पड़ा। –
- 1. sqlalchemy: घोषणात्मक
- 2. SQLAlchemy - टैग्स का शब्दकोश
- 3. घोषणात्मक कक्षाओं के SQLAlchemy आत्मनिरीक्षण
- 4. SQLAlchemy घोषणात्मक एक-से-कई परिभाषित त्रुटि
- 5. घोषणात्मक शैली के स्टार्टर प्रश्न SQLAlchemy संबंध()
- 6. अधिभावी __cmp__, __eq__, और SQLAlchemy घोषणात्मक बेस
- 7. SQLAlchemy: घोषणात्मक शैली वर्ग परिभाषा में पुनरावृत्ति से बचने
- 8. मैं sqlalchemy घोषणात्मक में विशेषता डिफ़ॉल्ट मान कैसे सेट करूं?
- 9. SQLAlchemy tuple शब्दकोश नहीं देता
- 10. SQLAlchemy घोषणात्मक: बिना किसी प्राथमिक कुंजी के टेबल?
- 11. मौजूदा MySQL डेटाबेस से रिवर्स इंजीनियर SQLAlchemy घोषणात्मक श्रेणी परिभाषा?
- 12. दो SQLAlchemy घोषणात्मक मॉडल एक ही declarative_base() साझा करना चाहिए?
- 13. एसक्यूएलकेमी घोषणात्मक
- 14. एसक्लाक्लेमी घोषणात्मक विस्तार बनाम elixir
- 15. SQLAlchemy
- 16. फ्लास्क आप inq_db() के साथ घोषणात्मक रूप से sqlalchemy का उपयोग कैसे करते हैं?
- 17. SQLAlchemy
- 18. SQLAlchemy
- 19. घोषणात्मक जीटीके
- 20. SQLalchemy
- 21. SQLAlchemy विरासत
- 22. SQLAlchemy: घोषणात्मक के साथ अद्यतन के लिए एक बेहतर तरीका है?
- 23. SQLAlchemy घोषणात्मक संपत्ति शामिल होने से (एकल विशेषता, पूरी वस्तु नहीं)
- 24. घोषणात्मक प्रमाणीकरण और if_attribute
- 25. SQLalchemy
- 26. SQLAlchemy
- 27. SQLAlchemy
- 28. SQLAlchemy
- 29. sqlalchemy
- 30. sqlalchemy
यदि आपको संपत्ति पर पूछताछ करने की आवश्यकता नहीं है तो यह उत्तर वैकल्पिक दृष्टिकोण प्रदान करता है: http://stackoverflow.com/questions/1378325/python-dicts-in-sqlalchemy/1378818#1378818 –