我想强制列的唯一性,但在向数据库添加对象后,此唯一列中的字符串将被截断。我的模型定义如下:
class Topic(Base):
__tablename__ = 'topic'
id = Column(Integer(), primary_key=True)
slug = Column(String(256), nullable=False, unique=True)
name = Column(String(256))
我正在使用SQLAlchemy和MYSQL。当我检查创建的表时:
mysql> DESCRIBE topic;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| slug | varchar(10) | NO | UNI | NULL | |
| name | varchar(256) | YES | | NULL | |
如何让slug列具有类型varchar(256)和Key UNI?
答案 0 :(得分:1)
SQLAlchemy不支持数据库迁移。为此,您需要Alembic之类的东西,这是由编写SQLAlchemy的同一个人创作的。
或者,您可以直接在MySQL服务器上发出DDL语句,并在Python中更改表定义。
[在mysql上]
ALTER TABLE topic MODIFY COLUMN slug VARCHAR(256);
[在python上]
class Topic(Base):
__tablename__ = 'topic'
id = Column(Integer(), primary_key=True)
slug = Column(String(256), nullable=False, unique=True)
name = Column(String(256))