2011-11-26 14 views
10
class Posts(Base): 
    __tablename__ = 'posts_posts' 
    id = Column(Integer, primary_key = True) 
    user_id = Column(Integer, nullable=False) 
    body = Column(Text, nullable=True) 

    created_at = Column(Date) << is this right? 
    updated_at = Column(Date) ?? 

मुझे created_at कॉलम भी स्वचालित रूप से सेट होने पर दिनांक सेट करने के लिए पसंद होगा। और यह भी, updated_at कॉलम दिनांक को सेट करने के लिए किसी भी समय यह पंक्ति बदल दी गई है।स्क्लेक्लेमी में, मैं 'MySQL दिनांक' कॉलम कैसे बना सकता हूं?

उत्तर

16

आप Column करने के लिए default और onupdate पैरामीटर प्रदान कर सकते हैं:

def _get_date(): 
    return datetime.datetime.now() 

class Posts(Base): 
    #... 
    created_at = Column(Date, default=_get_date) 
    updated_at = Column(Date, onupdate=_get_date) 

इस पर अधिक जानकारी के लिए Column दस्तावेज़ देखें।

+19

यहां तक ​​कि आसान तरीका भी है: 'update_at = कॉलम (दिनांक, onupdate = datetime.datetime.now)' – plaes

+0

एसक्यूएल अल्किमी संदर्भ में 'datetime.datetime.now()' टाइमज़ोन को कैसे तैयार किया जाए, इस बारे में कोई सुझाव? –

+0

@MikkoOhtamaa: ['sqlalchemy.types.Datetime'] (http://docs.sqlalchemy.org/en/rel_0_9/core/types.html?highlight=timezone#sqlalchemy.types.DateTime) पैरामीटर 'टाइमज़ोन' लेता है 'गलत 'के डिफ़ॉल्ट मूल्य के साथ। – van

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