Python sqlalchemy整数列大小

Python sqlalchemy整数列大小,python,sqlalchemy,Python,Sqlalchemy,我在某个地方看到,您可以为整数列(例如整数(20)、整数(10)等)定义列大小,但出于某种原因,sqlalchemy似乎在通过create_all()生成的create table查询中忽略了这些大小: 生成以下查询: CREATE TABLE t_job ( id INTEGER NOT NULL AUTO_INCREMENT, name VARCHAR(30), company_id INTEGER NOT NULL, PRIM

我在某个地方看到,您可以为整数列(例如整数(20)、整数(10)等)定义列大小,但出于某种原因,sqlalchemy似乎在通过create_all()生成的create table查询中忽略了这些大小:

生成以下查询:

CREATE TABLE t_job (
        id INTEGER NOT NULL AUTO_INCREMENT,
        name VARCHAR(30),
        company_id INTEGER NOT NULL,
        PRIMARY KEY (id),
        FOREIGN KEY(company_id) REFERENCES t_company (id) ON DELETE CASCADE
)
如果这不是一个正确的方法,那么什么是?

这个功能是

如果您使用的是MySQL,则可以使用
MySQL.INTEGER
数据类型:

from sqlalchemy.dialects import mysql 

class Job(Base):
    __tablename__ = "t_job"

    id = Column(mysql.INTEGER(20), Sequence('%s_id_seq' % __tablename__), primary_key=True, nullable=False)
    name = Column(String(30))
    company_id = Column(Integer(20), ForeignKey("t_company.id", ondelete="CASCADE"), nullable=False)

这确实忽略了使用ORM的意义,不是吗?(我还需要支持Oracle)据我所见,当使用mysql.INTEGER类型并连接到非mysql数据库时,该类型会恢复为内置的整数类型,因此Oracle应该仍然可以工作。我认为Oracle的INTEGER不允许指定大小,而且MySQL中整数的大小基本上是没有意义的。我就用整数。看见
from sqlalchemy.dialects import mysql 

class Job(Base):
    __tablename__ = "t_job"

    id = Column(mysql.INTEGER(20), Sequence('%s_id_seq' % __tablename__), primary_key=True, nullable=False)
    name = Column(String(30))
    company_id = Column(Integer(20), ForeignKey("t_company.id", ondelete="CASCADE"), nullable=False)