जैसा कि नीचे दिया गया है, मेरे पास नियोमोडेल में neo4j नोड और रिलेशनशिप स्कीमा है। अब मुझे एक फंक्शन बनाने की जरूरत है ताकि वह पर्सनरेल का यूआईडी ले सके और इस रिश्ते से जुड़े दो व्यक्तियों के बीच के रिश्ते को हटा सके। मुझे यह दस्तावेज़ीकरण में नहीं मिला: https://neomodel.readthedocs.io/en/latest /
class PersonRel(StructuredRel):
uid = StringProperty()
created_at = DateTimeProperty(
default=lambda: datetime.now(pytz.utc)
)
weight = FloatProperty()
direction = StringProperty()
class PersonNode(StructuredNode):
uid = UniqueIdProperty()
label = StringProperty(required=True)
description = StringProperty()
related_to = RelationshipFrom("PersonNode", "related_to", model=PersonRel)
created_at = DateTimeProperty(
default=lambda: datetime.now(pytz.utc)
)
2 जवाब
मैं Py2Neo का उपयोग करता हूं, इसलिए मैं नियोमॉडल से परिचित नहीं हूं। यदि आपको संपत्ति द्वारा संबंध खोजने और हटाने का कोई विकल्प नहीं मिलता है, तो आप इसे स्टैंडअलोन साइफर क्वेरी के साथ हटाना चुन सकते हैं।
आप Neomodel में स्टैंडअलोन साइबर क्वेरी निष्पादित कर सकते हैं जैसे:
db.cypher_query(query, params)
आपकी डिलीट क्वेरी इस तरह होगी:
MATCH ()-[rel]-() WHERE rel.uid={{uid}} DELETE rel
जैसा कि राज ने बताया, नियोमोडेल में किसी भी कच्चे साइबर क्वेरी को भी लिखना संभव है। हालांकि, प्रलेखन में, प्रक्रिया स्पष्ट रूप से वर्णित नहीं है।
निम्नलिखित कोड ने अंततः मुझे आवश्यक परिणाम प्राप्त करने में मदद की:
from neomodel import db as neodb
neodb.cypher_query("MATCH ()-[rel {uid:{uid}}]-() delete rel", {"uid": rel_id})
ध्यान देने योग्य बात यह है कि पैरा को एक शब्दकोश के रूप में पारित करने की आवश्यकता होती है, जिसका दस्तावेज़ीकरण में उल्लेख नहीं किया गया है। साथ ही, {uid:{uid}}
- क्वेरी के इस हिस्से में, आंतरिक यूआईडी, जो फिर से कर्ली ब्रेसिज़ है, एक वैरिएबल है जिसे पैराम्स में पास किया जाना चाहिए। लेकिन बाहरी ब्रेसिज़ साइफर सिंटैक्स का हिस्सा हैं, इसलिए नियोमोडेल कोड इसे एक चर के रूप में नहीं मानता है। साथ ही, {uid}
के आसपास उद्धरण जोड़ने की कोई आवश्यकता नहीं है।
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।