python - 初始化 SQLite3 数据库的多行

标签 python python-3.x sqlite sql-insert

我有一个包含 2 列的简单数据库表,第一个是灯泡 id,第二个是整数 status (0/1),表示灯是否亮起是否开启。默认情况下,我所有的灯开关都被假定为关闭。灯泡的数量是固定的,我只需要更改每一行的 id 即可。

这是我的表格:

cursor.execute(
    '''
    CREATE TABLE IF NOT EXISTS info(
    id integer,
    status integer
    )
    '''

)

与如下所示手动列出每一行相比,初始化表的更好方法是什么? (我知道灯的数量固定为 10)。

c.execute('INSERT INTO info VALUES(1,0)')
c.execute('INSERT INTO info VALUES(2,0)')
c.execute('INSERT INTO info VALUES(3,0)')

....

....
c.execute('INSERT INTO info VALUES(10,0)')

最佳答案

而不是这个create语句:

CREATE TABLE IF NOT EXISTS info(
  id integer,
  status integer
)

因为您希望 id 具有值 1-10,所以将 id 主键 (所以它将是从 1 开始的自动递增),列状态的默认值为 0:

CREATE TABLE IF NOT EXISTS info(
  id integer primary key,
  status integer default 0
)

现在,当您想要插入新行时,您所要做的就是执行以下语句:

insert into info default values;

这将插入带有下一个 id 的行(对于新表,id 将从 1 开始)和 status= 0
因此使用循环插入 10 行:

for i in range(1, 11):
    c.execute('insert into info default values')

关于python - 初始化 SQLite3 数据库的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57129958/

相关文章:

C# 与 SQLite 和外键

python - 如何使用 numpy.savez 将带有子数组的数组保存到单独的 .npy 文件中

python - 从子线程停止主线程

python - 我们可以在spyder中直接使用One Hot Encoding而不使用标签编码来处理分类数据吗

python - 使用列表理解进行列表转换

android - 尽管 autoGenerate=true,但主键的房间唯一约束失败

python - 比较元组列表中的多个项目并从同一列表中删除元组

python - 使用正则表达式替换文本文件中的多个条目

python - 当函数需要类属性时覆盖Python中的绑定(bind)方法

ruby - 将 Blob 数据从 SQLite 数据库保存到文件