如何在SQLAlchemy中定义一个无符号整数 [英] How to define an unsigned integer in SQLAlchemy
问题描述
Users =CREATE TABLE Users(
$下面是我在SQLAlchemy中使用它的方法:
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)
)
类用户(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))
我的问题是,怎么可以我使SQLAlchemy模型被指定为一个无符号整数?
解决方案SQLAlchemy类型(例如 Integer )似乎试图遵守标准的SQL数据类型。由于unsigned integer不是一个标准的数据类型,所以你不会看到像
UnsignedInteger
或Integer(unsigned = True)
在这种情况下(如MySQL这样的数据库有一个本身不是标准数据类型的数据类型,不标准),您可以通过获取方言特定类型来访问这些类型/选项。对于MySQL,您可以通过
sqlalchemy.dialects.mysql
模块,像这样...
from sqlalchemy.dialects.mysql import INTEGER
class用户(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))
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?
解决方案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
orInteger(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))
这篇关于如何在SQLAlchemy中定义一个无符号整数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!