मैं निम्नलिखित समस्या है: (: columnValue columnName) मानSQLAlchemy गतिशील मानचित्रण
class Word(object):
def __init__(self):
self.id = None
self.columns = {}
def __str__(self):
return "(%s, %s)" % (str(self.id), str(self.columns))
self.columns एक dict जो आयोजन करेगा है:
मैं कक्षा की है। स्तंभों के नाम कार्यावधि में जाना जाता है और वे एक wordColumns सूची में लोड किए गए हैं, उदाहरण के
wordColumns = ['english', 'korean', 'romanian']
wordTable = Table('word', metadata,
Column('id', Integer, primary_key = True)
)
for columnName in wordColumns:
wordTable.append_column(Column(columnName, String(255), nullable = False))
के लिए मैं भी एक स्पष्ट नक्शाकार गुण "बल" तालिका स्तंभ शब्द पर मैप किया जाने के लिए बनाया। कॉलम [कॉलमनाम], word.columnName के बजाय, मुझे मैपिंग पर कोई त्रुटि नहीं मिलती है, लेकिन ऐसा लगता है कि यह काम नहीं करता है।
mapperProperties = {}
for column in wordColumns:
mapperProperties['columns[\'%']' % column] = wordTable.columns[column]
mapper(Word, wordTable, mapperProperties)
जब मैं एक शब्द भी वस्तु लोड, SQLAlchemy एक वस्तु जो word.columns [ 'अंग्रेज़ी'], word.columns [ 'कोरियाई'] आदि लक्षण इसे word.columns में लोड करने के बजाय है dict बनाता है । तो प्रत्येक कॉलम के लिए, यह एक नई संपत्ति बनाता है। इसके अलावा word.columns शब्दकोश भी मौजूद नहीं है।
वैसे ही, जब मैं एक शब्द को जारी रखने का प्रयास करता हूं, तो SQLAlchemy शब्द.columns के बजाय word.columns ['english'] (स्ट्रिंग प्रकार) नामक गुणों में कॉलम मान ढूंढने की अपेक्षा करता है।
मुझे यह कहना है कि पाइथन और स्क्लाक्लेमी के साथ मेरा अनुभव काफी सीमित है, शायद ऐसा करना संभव नहीं है जो मैं करने की कोशिश कर रहा हूं।
किसी भी मदद की सराहना की,
अग्रिम धन्यवाद।
इस तरह के एक पूर्ण उत्तर लिखने के लिए समय लेने के लिए धन्यवाद। मैं मानता हूं कि पहला समाधान दूसरे की तुलना में अधिक स्वच्छ और अधिक सुरुचिपूर्ण है। मेरे पास इस तथ्य को छोड़कर एक नियम का उपयोग करने का कोई अच्छा कारण नहीं था कि यह "सामान्य" चीज थी जो मेरे दिमाग में आई थी। जैसा कि मैंने पहले कहा था, मैं पाइथन में नया हूं और मैंने अभी तक गतिशील भाषाओं के लाभों का लाभ उठाने के लिए सीखा नहीं है। मैं आपके पहले समाधान का उपयोग करूंगा। धन्यवाद फिर से :) –
मैं इस बात पर नहीं जा सकता कि इस तरह की कितनी पोस्ट यहां मौजूद हैं, लेकिन जब भी मैं एक देखता हूं तब भी मैं डरता हूं। इसमें इतना विचार डालने के लिए धन्यवाद। एक साल बाद, नए लोगों के लिए अभी भी सहायक। आपको चेयर – Profane
अब, अगर मैं शब्द शुरू करने के लिए kwargs का उपयोग करना चाहता था, जैसे w = Word (english = 'name', korean = 'Phoo', romanian = 'nume'), यह कैसे काम करेगा? मेरे मामले में यह एक __init__ त्रुटि फेंकने पर जारी रहेगा। धन्यवाद! – Julius