2013-10-31 7 views
10

Ich bin ein Migrationsportal zu Flask mit Flask-SQLAlchemy (MySQL). Im Folgenden wird der Code Früher habe ich meine DB für mein bestehendes Portal zu erstellen:So definieren Sie eine vorzeichenlose Ganzzahl in SQLAlchemy

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) 
      ) """ 

Hier ist, wie ich versuche, es in SQLAlchemy zu verwenden:

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)) 

Meine Frage ist, wie kann ich das machen SQLAlchemy-Modell als vorzeichenlose Ganzzahl angegeben werden?

+0

ich Ihre Frage zu modifizieren ihren Umfang auf eine einzige Frage zu begrenzen (Wie geben Sie eine ganze Zahl als unsigned). Wenn Sie möchten, stellen Sie eine zweite Frage für Ihre zweite Frage. Ich würde empfehlen "Hier ist mein Code, bitte machen Sie Vorschläge" auf http://codereview.stackexchange.com gefragt werden. –

Antwort

26

SQLAlchemy-Typen (wie Integer) scheinen zu versuchen, die SQL-Standarddatentypen einzuhalten. Da ein "vorzeichenloser Integer" kein Standarddatentyp ist, wird in etwa kein UnsignedInteger oder Integer(unsigned=True) angezeigt.

In solchen Fällen (in denen eine Datenbank wie MySQL einen Datentyp hat, der selbst kein Standarddatentyp ist oder über Optionen verfügt, die nicht Standard sind) können Sie auf diese Typen/Optionen zugreifen, indem Sie dialektspezifische Typen erhalten. Für MySQL, können Sie diese Art durch die sqlalchemy.dialects.mysql module zugreifen, wie so ...

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

Beachten Sie, dass ich nie versucht habe, eine vorzeichenlose Ganzzahl als Primärschlüssel mit SQLAlchemy zu verwenden, aber ich sehe keinen Grund, warum es nicht funktionieren sollte. –

Verwandte Themen