How to define an unsigned integer in SQLAlchemy

匿名 (未验证) 提交于 2019-12-03 03:05:02

问题:

I am migrating a portal to Flask with Flask-SQLAlchemy (MySQL). Below is the code I used to create my DB for my existing portal:

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

Here is how I am trying to use it in 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)) 

My question is, how can I make the SQLAlchemy model be specified as an unsigned integer?

回答1:

SQLAlchemy types (such as Integer) seem to try to abide by the standard SQL data types. Since an "unsigned integer" is not a standard data type, you won't see something like an UnsignedInteger or Integer(unsigned=True).

In cases such as these (where a database such as MySQL has a data type that is itself not a standard data type or has options that are not standard) you can access these types/options by getting dialect-specific types. For MySQL, you can access these types through the sqlalchemy.dialects.mysql module, like 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)) 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!