是否可以为使用 python 的 sqlite3 中的主键自动增量列选择第一个值?

Posted

技术标签:

【中文标题】是否可以为使用 python 的 sqlite3 中的主键自动增量列选择第一个值?【英文标题】:is choosing first value possible, for the primary key autoincrement column in sqlite3 using python? 【发布时间】:2021-11-10 07:13:25 【问题描述】:

我写了一个 python3 scrypt,使用 sqlite3 创建了一个表并设置了一个主键自动增量,它可以工作。但我需要从不同的数字开始自动增量(默认当然是'1')。 (例如第一行'2011',第二行'2012',第三行'2013',exc.....)有可能吗? 谢谢

【问题讨论】:

【参考方案1】:

你为什么要这样做?自动增量的目的是创建行标识符,每行的唯一值是什么。根据documentation:

AUTOINCREMENT 关键字会带来额外的 CPU、内存、磁盘空间和磁盘 I/O 开销,如果不是严格需要,应该避免。通常不需要。

如果您想要自动增量从 2011 年开始的表,您应该明确避免使用 AUTOINCREMENT 列。

但我有另一个解决方案:

您应该创建没有自动增量列的表。


CREATE TABLE my_table (
     col1 TEXT
    ,col2 INT
)

然后你创建一个VIEW

CREATE VIEW v_my_table
  AS
SELECT
    ROWID + 2010 as ID
    ,col1
    ,col2
FROM 
    my_table

要访问表格数据,您将使用视图而不是表格。

SELECT * FROM v_my_table

VIEW 将包含您从 2011 年开始的自动增量列。

【讨论】:

以上是关于是否可以为使用 python 的 sqlite3 中的主键自动增量列选择第一个值?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 和 SQLite3 创建更新记录函数

Python sqlite3 占位符

这个 Python 代码是不是容易受到 SQL 注入的影响? (SQLite3)

Sqlite3数据库Python基础操作

pip安装sqlite3

如何在 Ubuntu 16.04 上将 FTS5 扩展与带有 Python 3.7 的 sqlite3 python 模块一起使用?