2013-10-31 65 views
10

Tôi đang di chuyển một cổng vào Flask bằng Flask-SQLAlchemy (MySQL). Dưới đây là đoạn code tôi sử dụng để tạo DB của tôi cho cổng thông tin hiện tại của tôi:Cách xác định số nguyên không dấu trong 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) 
      ) """ 

Dưới đây là làm thế nào tôi đang cố gắng sử dụng nó trong 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)) 

Câu hỏi của tôi là, làm thế nào tôi có thể làm cho Mô hình SQLAlchemy được chỉ định là một số nguyên không dấu?

+0

Tôi đang thay đổi câu hỏi của bạn để hạn chế phạm vi của nó cho một câu hỏi duy nhất (Làm thế nào để bạn xác định một số nguyên như unsigned). Nếu bạn muốn, hãy đặt câu hỏi thứ hai cho câu hỏi thứ hai của bạn. Tôi muốn giới thiệu "Đây là mã của tôi, vui lòng đưa ra đề xuất" được yêu cầu trên http://codereview.stackexchange.com. –

Trả lời

26

Các loại SQLAlchemy (chẳng hạn như Integer) dường như cố gắng tuân theo các kiểu dữ liệu SQL chuẩn. Vì "số nguyên không dấu" không phải là loại dữ liệu chuẩn, bạn sẽ không thấy thứ gì như số UnsignedInteger hoặc Integer(unsigned=True). Trong trường hợp như vậy (nơi mà cơ sở dữ liệu như MySQL có loại dữ liệu không phải là kiểu dữ liệu chuẩn hoặc có các tùy chọn không chuẩn), bạn có thể truy cập các loại/tùy chọn này bằng cách sử dụng các loại phương ngữ cụ thể. Đối với MySQL, bạn có thể truy cập vào các loại thông qua sqlalchemy.dialects.mysql module, như vậy ...

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

Lưu ý rằng tôi đã không bao giờ thực sự cố gắng sử dụng một số nguyên unsigned như là một khóa chính với SQLAlchemy, nhưng tôi thấy không có lý do tại sao nó không nên làm việc. –

Các vấn đề liên quan