简体   繁体   English

Flask-SQLAlchemy声明性和MySQL特定的数据类型

[英]Flask-SQLAlchemy declarative and MySQL specific data types

I have an already existing MySQL DB with many columns defined with MySQL specific column types (MEDIUMINT, TINYINT to mention a few), and even if the column type belongs to a standard SQL data type, sometimes is declared as unsigned. 我有一个已经存在的MySQL数据库,其中有许多列定义了MySQL特定的列类型(MEDIUMINT,TINYINT等等),即使列类型属于标准SQL数据类型,有时也会声明为unsigned。

Now I'm writing a Flask app to provide an API to access DB in various ways. 现在我正在编写一个Flask应用程序,以各种方式提供访问DB的API。 Using plain SQLAlchemy, I would import specific data types definitions from sqlalchemy.dialects.mysql, like: 使用普通的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)

But I was told to use Flask-SQLAlchemy, so I'm declaring my tables like 但我被告知使用Flask-SQLAlchemy,所以我宣布我的桌子就像

from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer**(???)**, primary_key=True)

How can I tell Flask-SQLAlchemy that the column id is a MySQL MEDIUMINT and that is unsigned? 如何告诉Flask-SQLAlchemy列id是MySQL MEDIUMINT而且是无符号的? Can I pass, as the first argument to "db.Column" a data type definition imported not from "db.Something" but from sqlalchemy.dialects.mysql, and that would be a good practice (doesn't seem to me)? 我可以传递,作为“db.Column”的第一个参数,不是从“db.Something”而是从sqlalchemy.dialects.mysql导入的数据类型定义,这将是一个很好的做法(在我看来不是这样)?

Thank you ;) 谢谢 ;)

What's the problem with? 有什么问题?

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM