2016-05-25 5 views
6

मैं एक व्यर्थ स्तम्भ जो मूल्यों के दोनों प्रकार के नल (डिफ़ॉल्ट के रूप में) और पूर्णांक शामिल साथ तालिका है:SQLAlchemy स्तंभ है जो दोनों अशक्त और पूर्णांक शामिल फिल्टर करने के लिए कैसे को महत्व देता

class Node(db.Model): 
    __tablename__ = "node" 
    maintenance = db.Column(db.Integer, nullable=True) 

अनुरोध इस तरह है:

maintenance = 1 
node_list = Node.query.filter(Node.maintenance != maintenance).all() 

मैं सभी कोशिकाओं जो Null या 0 मान का चयन करने की जरूरत है।

अग्रिम धन्यवाद!

उत्तर

8

मुझे उन सभी कक्षों को चुनने की आवश्यकता है जिनमें 'शून्य' या '0' मान शामिल हैं।

तार्किक OR

Node.query.filter((Node.maintenance == None) | (Node.maintenance == 0)) 

is_(None)

या, के रूप में उपयोग | का उपयोग == None (क्योंकि linters का)

Node.query.filter((Node.maintenance.is_(None)) | (Node.maintenance == 0)) 
का उपयोग कर से बचने के लिए

or_

या, इस फार्म

from sqlalchemy import or_ 
Node.query.filter(or_(Node.maintenance == None, Node.maintenance == 0)) 

in_

का उपयोग करते हुए, तो सोच रहे हैं, तो आप एसक्यूएल और अजगर में कुछ in ऑपरेटर के लिए समान का उपयोग कर, आप 'क्वेरी कर सकता है का उपयोग करते हुए ठीक है आप इसे एसक्यूएलकेमी में भी कर सकते हैं, लेकिन दुर्भाग्य से it doesn't work for None/NULL values, लेकिन उदाहरण के लिए हम देख सकते हैं कि

Node.query.filter(Node.maintenance.in_([0, 1])) 

Node.query.filter((Node.maintenance == 0) | (Node.maintenance == 1)) 
+0

के बराबर है धन्यवाद! तुम्हारी मदद के लिए शुक्रिया! –

+1

यहां आया था मौसम के जवाब की तलाश में 'कोई भी'' in_' - +1 में उपयोग नहीं किया जा सकता था। –

संबंधित मुद्दे