Flask-SQLAlchemy 声明式与 MySQL 特定数据类型

7 投票
1 回答
10595 浏览
提问于 2025-04-18 02:21

我有一个已经存在的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)

撰写回答