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