Flask-SQLAlchemy 声明式与 MySQL 特定数据类型
我有一个已经存在的MySQL数据库,里面有很多列使用了MySQL特有的数据类型(比如MEDIUMINT和TINYINT等)。即使这些列的数据类型属于标准SQL类型,有时候它们还会被声明为无符号(unsigned)。
现在我正在写一个Flask应用程序,目的是提供一个API来以不同的方式访问这个数据库。使用普通的SQLAlchemy时,我会从sqlalchemy.dialects.mysql导入特定的数据类型定义,比如:
from sqlalchemy import Column
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.dialects.mysql import MEDIUMINT, TINYINT
Base = declarative_base()
class User(Base):
id = Column(MEDIUMINT(unsigned=True), primary_key=True)
但是有人告诉我应该使用Flask-SQLAlchemy,所以我现在是这样声明我的表的:
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer**(???)**, primary_key=True)
我该如何告诉Flask-SQLAlchemy,列id是一个MySQL的MEDIUMINT,并且是无符号的?我可以把从sqlalchemy.dialects.mysql导入的数据类型定义作为“db.Column”的第一个参数传进去吗?这样做算不算好习惯呢(我觉得不太像)?
谢谢;)
1 个回答
11
这个问题是什么呢?
from flask.ext.sqlalchemy import SQLAlchemy
from sqlalchemy import Column
from sqlalchemy.dialects.mysql import MEDIUMINT, TINYINT
db = SQLAlchemy(app)
class User(db.Model):
id = Column(MEDIUMINT(unsigned=True), primary_key=True)