gpt4 book ai didi

python - SQLAlchemy + MYSQL 唯一字符串列被截断

转载 作者:行者123 更新时间:2023-11-29 12:22:32 29 4
gpt4 key购买 nike

我想强制列的唯一性,但是在将对象添加到数据库后,该唯一列中的字符串被截断。我有一个定义如下的模型:

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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com