gpt4 book ai didi

SQLite:删除一个rowid后如何插入一个新的rowid?

转载 作者:行者123 更新时间:2023-12-02 17:43:03 25 4
gpt4 key购买 nike

假设我的 table 是,

CREATE TABLE bookmark (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Name STRING(64)
);

我已在此表中插入三行,如下所示:

Id   | Name
1 | Bookmark 1
2 | Bookmark 2
3 | Bookmark 3

现在,如果我删除第 3 行,我会得到:

Id | Name
1 | Bookmark 1
2 | Bookmark 2

现在我插入一个名为 Bookmark 4 的新行,我得到:

Id | Name
1 | Bookmark 1
2 | Bookmark 2
3 | Bookmark 4

我不应该期待以下内容吗?

Id | Name
1 | Bookmark 1
2 | Bookmark 2
4 | Bookmark 4

有人知道怎么做吗?

<小时/>

注意:这不是 SQLite 行为,而是 SQLAlchemy 问题。作为@CL。指出here ,它确实达到了我想要的效果。

最佳答案

抱歉各位,最后我发现这是由 SQLAlchemy 1.1.13 引起的,即使我们指定了如下所示,它也没有为 SQLite 设置 AUTOINCRMENT 字段,

db = SQLAlchemy()
id = db.Column(db.Integer, primary_key=True, autoincrement=True)

当我使用 Flask 时,指定时,

app.config['SQLALCHEMY_ECHO'] = True

日志显示AUTOINCRMENT实际上没有设置。

经过一番挖掘,在 SQLAlchemy 1.1.13 ( source ) 中为 SQLite 执行此操作,

class Bookmark(db.Model):
__tablename__ = "bookmark"
__table_args__ = {'sqlite_autoincrement': True}

对于 SQLAlchemy 1.2,以下内容可能有效(未经测试),

id = db.Column(db.Integer, primary_key=True, sqlite_autoincrement=True)

关于SQLite:删除一个rowid后如何插入一个新的rowid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45953643/

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