如何在SQLAlchemy中定义一个无符号整数 [英] How to define an unsigned integer in SQLAlchemy

查看:1176
本文介绍了如何在SQLAlchemy中定义一个无符号整数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Flask-SQLAlchemy(MySQL)将一个门户迁移到Flask。以下是我用于为现有门户创建数据库的代码:

  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)



 类用户(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 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))

这篇关于如何在SQLAlchemy中定义一个无符号整数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆