मुझे स्क्लेक्लेमी कोर में एक साधारण SQL अद्यतन कथन होना चाहिए, यह लिखने में कठिनाइयों का सामना करना पड़ रहा है। हालांकि, मुझे कोई दस्तावेज, उदाहरण या ट्यूटोरियल नहीं मिल रहा है जो दिखाता है कि कई स्थितियों को कैसे जोड़ना है। मुझे यकीन है कि यह वहां है - बस इसे नहीं मिला।SQLAlchemy: कई स्थितियों के साथ एसक्यूएल अभिव्यक्ति
self.struct = Table('struct',
metadata,
Column('schema_name', String(40), nullable=False,
primary_key=True),
Column('struct_name', String(40), nullable=False,
primary_key=True),
Column('field_type', String(10), nullable=True),
Column('field_len', Integer, nullable=True))
यहाँ डालने & अद्यतन बयान है::
यहाँ तालिका है
def struct_put(self, **kv):
try:
i = self.struct.insert()
result = i.execute(**kv)
except exc.IntegrityError: # row already exists - update it:
u = self.struct.update().\
where((self.struct.c.struct_name==kv['struct_name']
and self.struct.c.schema_name==kv['schema_name'])).\
values(field_len=kv['field_len'],
field_type=kv['field_type'])
result = u.execute()
कोड डालने के ठीक संभालती है, लेकिन तालिका में सभी पंक्तियों को अद्यतन करता है। क्या आप इस खंड के वाक्यविन्यास को समझने में मेरी सहायता कर सकते हैं? सभी सुझावों का स्वागत है - अग्रिम धन्यवाद।
संपादित करें: ठीक किया खंड इस तरह दिखता है:
where((and_(self.struct.c.parent_struct_name==kv['parent_struct_name'],
self.struct.c.struct_name==kv['struct_name'],
self.struct.c.schema_name==kv['schema_name']))).\
यह एक बहुत ही सरल वाक्य रचना है, लेकिन SQLAlchemy की कई परतों को देखते हुए यह निर्धारित करने के लिए वास्तव में इस संदर्भ में लागू किया क्या आश्चर्यजनक रूप से कठिन था।
और_() का उपयोग करने के लिए एक शॉर्टकट एक साथ कई() क्लोज़ को श्रृंखलाबद्ध करना है। तो: .where (ए == 1)। कहीं (बी == 2)। कहीं (सी == 3)। देखें [ डॉक्स] (http: //docs.sq lalchemy.org/en/rel_1_0/core/tutorial.html#conjunctions)। – Arie