sqlalchemy整数列大小

时间:2013-04-04 07:07:58

标签: python sqlalchemy

我在某处看到你可以为Integer列定义一个列大小(例如Integer(20),Integer(10)等)但是由于某种原因,sqlalchemy似乎忽略了它生成的create table查询中的那些大小通过create_all():

class Job(Base):
    __tablename__ = "t_job"

    id = Column(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)

生成以下查询:

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
)

如果这不是一个正确的方法,那是什么?

1 个答案:

答案 0 :(得分:6)

此功能为deprecated in version 7

如果您使用的是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)