9

我在某处看到您可以为整数列(例如 Integer(20)、Integer(10) 等)定义列大小,但由于某种原因,sqlalchemy 似乎忽略了它通过 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
)

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

4

2 回答 2

7

此功能在 0.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)
于 2013-04-04T07:21:50.850 回答
0

没有任意大小的整数,但 SQLAlchemyInteger还支持BigIntegerSmallInteger

https://docs.sqlalchemy.org/en/14/core/type_basics.html#generic-types

于 2021-08-15T13:51:41.187 回答