当我创建表时,像这样使用flask-sqlalchemy:
class Te(Model):
__tablename__ = 'tt'
id = Column(db.Integer(), primary_key=True)
t1 = Column(db.String(80), unique=True, )
t3 = Column(db.String(80), unique=True, index=True, )
Run Code Online (Sandbox Code Playgroud)
在我的 Sequel Pro 中,我得到了表创建信息:
CREATE TABLE `tt` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`t1` varchar(80) DEFAULT NULL,
`t3` varchar(80) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `t1` (`t1`),
UNIQUE KEY `ix_tt_t3` (`t3`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Run Code Online (Sandbox Code Playgroud)
这意味着 t1 与 MySQL 中的 t3 完全相同?因此,当您定义时unique=True,不需要定义index=True?
谢谢。
我认为您对 sqlalchemy 中的索引目的有一个术语混淆。在 sql 数据库中使用索引来加快查询性能。
您会注意到索引键的使用,因为生成的 sql 代码是:
UNIQUE KEY `ix_tt_t3` (`t3`)
Run Code Online (Sandbox Code Playgroud)
sqlalchemy 名词索引的方式是idx_%columnlabbel. 这与生成的 sql 代码匹配。
所以索引的使用与否只与性能有关,唯一键意味着列值不能在'tt'表中的同一列中一直重复。
希望这可以帮助,
| 归档时间: |
|
| 查看次数: |
13545 次 |
| 最近记录: |