2009-02-14 12 views
12

जब मैं SQLAlchemy का उपयोग कर डेटाबेस में एक नया रिकॉर्ड डालने का प्रयास करता हूं और मैं सभी मानों को भरता नहीं हूं, तो यह उन्हें "कोई नहीं" (उन्हें छोड़ने के बजाए) के रूप में डालने का प्रयास करता है। इसके बाद शिकायतें "शून्य नहीं हो सकती" त्रुटियों के बारे में शिकायत करती हैं। क्या एसक्यूएल क्वेरी से कॉलम को छोड़ने का कोई तरीका है अगर मैंने इंस्टेंस घोषित करते समय उन्हें छोड़ दिया?SQLAlchemy और खाली कॉलम

उत्तर

13

यह एक डेटाबेस स्कीमा मुद्दा है, एक SQLAlchemy मुद्दा नहीं। यदि आपके डेटाबेस स्कीमा में एक स्तंभ है जो पूर्ण नहीं हो सकता है, तो आपको वहां कुछ (यानी कोई नहीं) रखना होगा। या उन कॉलम में NULL को अनुमति देने के लिए अपनी स्कीमा बदलें।

विकिपीडिया एक लेख about NULL और एक लेख non-NULL constraints

39

अली एक से जवाब देने के लिए जोड़ने के लिए का वर्णन करता है जो है, इस ताकि शून्य कॉलम में अनुमति दी है यदि आप अपने स्तंभ परिभाषा nullable=True की आवश्यकता है का मतलब है। उदाहरण के लिए:

email_address = Column(String, nullable=True) 

SQLAlchemy docs for Tables and Columns, v1.2 दस्तावेज़ से अंश:

नल - गलत पर सेट करते हैं, तो कारण होगा "नहीं NULL" वाक्यांश जोड़ा जब स्तंभ के लिए DDL पैदा होने के लिए । जब सही होता है, तो आमतौर पर कुछ भी उत्पन्न नहीं करता है (एसक्यूएल में यह "शून्य" पर डिफ़ॉल्ट होता है), कुछ विशिष्ट बैकएंड-विशिष्ट एज मामलों को छोड़कर जहां "न्यूल" स्पष्ट रूप से प्रस्तुत कर सकता है। सत्य तक डिफ़ॉल्ट जब तक प्राथमिक_की भी सही नहीं है, जिसमें केस गलत पर डिफ़ॉल्ट होता है। यह पैरामीटर केवल जारी करने के लिए उपयोग किया जाता है तालिका विवरण बनाएं।

+5

यह और अधिक सीधे प्रश्न का उत्तर देता है – 10flow