2013-10-31 22 views
10

Przenoszę portal do Flask z Flask-SQLAlchemy (MySQL). Poniżej znajduje się kod użyłem do stworzenia mojego DB dla mojego istniejącego portalu:Jak zdefiniować liczbę całkowitą bez znaku w 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) 
      ) """ 

Oto jak staram się go używać w 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)) 

Moje pytanie brzmi, jak mogę zrobić Model SQLAlchemy należy podać jako liczbę całkowitą bez znaku?

+0

mam modyfikując swoje pytanie do ograniczenia jego zakresu na jedno pytanie (Jak można określić jako liczbę całkowitą bez znaku). Jeśli chcesz, zrób drugie pytanie na drugie pytanie. Polecam "Tutaj jest mój kod, proszę o sugestie", proszę pytać na http://codereview.stackexchange.com. –

Odpowiedz

26

Typy SQLAlchemy (takie jak Integer) wydają się starać się przestrzegać standardowych typów danych SQL. Ponieważ "niepodpisana liczba całkowita" nie jest standardowym typem danych, nie zobaczysz czegoś takiego jak UnsignedInteger lub Integer(unsigned=True).

W takich przypadkach (gdy baza danych, taka jak MySQL, ma typ danych, który sam nie jest standardowym typem danych lub ma niestandardowe opcje), można uzyskać dostęp do tych typów/opcji, pobierając typy specyficzne dla dialektu. MySQL, można uzyskać dostęp do tych rodzajów poprzez sqlalchemy.dialects.mysql module, tak jak ...

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

Zauważ, że nigdy nie próbowałem używać niepodpisanej liczby całkowitej jako klucza podstawowego w SQLAlchemy, ale nie widzę powodu, dla którego nie powinien on działać. –

Powiązane problemy