我想强制列的唯一性,但是在将对象添加到数据库后,该唯一列中的字符串被截断。我有一个定义如下的模型:
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?
最佳答案
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))
关于python - SQLAlchemy + MYSQL 唯一字符串列被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28814804/