sqlalchemy Целочисленный размер столбца

Я где-то видел, что вы можете определить размер столбца для столбцов Integer (например, 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
)

Если это неправильный способ сделать это, что?

2 ответа

Эта функциональность устарела в версии 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)

Целых чисел произвольного размера не существует, но SQLAlchemy поддерживает помимо Integer также BigInteger и SmallInteger.

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

Другие вопросы по тегам