我在某处看到你可以为Integer列定义一个列大小(例如Integer(20),Integer(10)等)但是由于某种原因,似乎sqlalchemy忽略了它通过create_all生成的create table查询中的那些大小( ):
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)
Run Code Online (Sandbox Code Playgroud)
生成以下查询:
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
)
Run Code Online (Sandbox Code Playgroud)
如果这不是一个正确的方法来做到这一点,那是什么?
如果您使用的是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)
Run Code Online (Sandbox Code Playgroud)