2013-10-31 7 views
10

में एक हस्ताक्षरित पूर्णांक को परिभाषित करने के लिए कैसे मैं फ्लास्क-स्क्लाक्लेमी (MySQL) के साथ फ्लास्क में एक पोर्टल माइग्रेट कर रहा हूं। नीचे दिए गए कोड मैं अपने मौजूदा पोर्टल के लिए मेरे DB बनाने के लिए प्रयोग किया जाता है: मैं कैसे कर सकते हैंSQLAlchemy

class Users(db.Model): 
     id   = db.Column(db.Integer, primary_key=True) 
     UserName  = db.Column(db.String(40)) 
     FirstName = db.Column(db.String(40)) 
     LastName  = db.Column(db.String(40)) 
     EmailAddress = db.Column(db.String(255)) 
     Password  = db.Column(db.String(40)) 

मेरा प्रश्न है,:

Users = """CREATE TABLE Users(
      id INT UNSIGNED AUTO_INCREMENT NOT NULL, 
      UserName VARCHAR(40) NOT NULL, 
      FirstName VARCHAR(40) NOT NULL, 
      LastName VARCHAR(40) NOT NULL, 
      EmailAddress VARCHAR(255) NOT NULL,  
      Password VARCHAR(40) NOT NULL,  
      PRIMARY KEY (id) 
      ) """ 

यहाँ है कि कैसे मैं SQLAlchemy में इसका इस्तेमाल करने की कोशिश कर रहा हूँ SQLAlchemy मॉडल को एक हस्ताक्षरित पूर्णांक के रूप में निर्दिष्ट किया जाना चाहिए?

+0

मैं एक ही सवाल (आप कैसे अहस्ताक्षरित के रूप में एक पूर्णांक निर्दिष्ट करते हैं) को इसके दायरे को सीमित करने के लिए अपने प्रश्न को संशोधित कर रहा हूँ। यदि आप चाहें, तो अपने दूसरे प्रश्न के लिए दूसरा प्रश्न बनाएं। मैं अनुशंसा करता हूं कि "यहां मेरा कोड है कृपया सुझाव दें" http://codereview.stackexchange.com पर पूछा जाए। –

उत्तर

26

SQLAlchemy प्रकार (जैसे Integer) मानक SQL डेटा प्रकारों का पालन करने का प्रयास करते हैं। चूंकि एक "हस्ताक्षरित पूर्णांक" मानक डेटा प्रकार नहीं है, इसलिए आपको UnsignedInteger या Integer(unsigned=True) जैसे कुछ दिखाई नहीं देगा।

इन मामलों जैसे (जहां MySQL जैसे डेटाबेस में डेटा प्रकार है जो मानक डेटा प्रकार नहीं है या ऐसे विकल्प हैं जो मानक नहीं हैं) आप डायलेक्ट-विशिष्ट प्रकार प्राप्त करके इन प्रकारों/विकल्पों तक पहुंच सकते हैं। MySQL के लिए, आप तो जैसे sqlalchemy.dialects.mysql module के माध्यम से इन प्रकार उपयोग कर सकते हैं, ...

from sqlalchemy.dialects.mysql import INTEGER 

class Users(db.Model): 
    id   = db.Column(INTEGER(unsigned=True), primary_key=True) 
    UserName  = db.Column(db.String(40)) 
    FirstName = db.Column(db.String(40)) 
    LastName  = db.Column(db.String(40)) 
    EmailAddress = db.Column(db.String(255)) 
    Password  = db.Column(db.String(40)) 
+1

ध्यान दें कि मैंने वास्तव में एसक्यूएलकेमी के साथ प्राथमिक कुंजी के रूप में एक हस्ताक्षरित पूर्णांक का उपयोग करने की कोशिश नहीं की है, लेकिन मुझे कोई कारण नहीं दिखता कि इसे क्यों काम नहीं करना चाहिए। –