gpt4 book ai didi

sqlite - 如何在 sqlalchemy 的列上创建非唯一索引?

转载 作者:行者123 更新时间:2023-12-03 15:56:14 25 4
gpt4 key购买 nike

我正在尝试在 file_name 上创建一个非唯一索引柱子。我期待高基数,比如 1,000 行,有 950 个唯一文件名。

file_collection = Table ('file_collection', metadata,
Column('id', Integer, primary_key=True),
Column('full_path', String, unique=True, nullable=False),
Column('file_name', String, index=True, nullable=False)
)

我的方言是sqlite。创建表时,未在 file_name 上创建非唯一键柱子
CREATE TABLE file_collection (
id INTEGER NOT NULL,
full_path VARCHAR NOT NULL,
file_name VARCHAR NOT NULL,
PRIMARY KEY (id),
UNIQUE (full_path)
)

如何在 file_name 上创建非唯一键柱子?

最佳答案

请记住,SQLite 要求您创建一个非唯一索引作为单独的语句,而不是在实际的 CREATE TABLE 中。某些 RDBM 允许的语句。假设我有下表:

class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(255), index=True)

创建将按如下方式运行。
2014-01-03 17:28:48,229 INFO sqlalchemy.engine.base.Engine PRAGMA table_info("users")
2014-01-03 17:28:48,229 INFO sqlalchemy.engine.base.Engine ()
2014-01-03 17:28:48,229 INFO sqlalchemy.engine.base.Engine
CREATE TABLE users (
id INTEGER NOT NULL,
email VARCHAR(255),
PRIMARY KEY (id)
)


2014-01-03 17:28:48,230 INFO sqlalchemy.engine.base.Engine ()
2014-01-03 17:28:48,230 INFO sqlalchemy.engine.base.Engine COMMIT
2014-01-03 17:28:48,230 INFO sqlalchemy.engine.base.Engine CREATE INDEX ix_users_email ON users (email)
2014-01-03 17:28:48,230 INFO sqlalchemy.engine.base.Engine ()
2014-01-03 17:28:48,231 INFO sqlalchemy.engine.base.Engine COMMIT

请注意,CREATE TABLE 语句不显示正在创建的索引,但它是在紧随其后的后续语句中创建的。

关于sqlite - 如何在 sqlalchemy 的列上创建非唯一索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20913409/

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