gpt4 book ai didi

python - 使用 Sqlite 将自动递增 ID 列添加到现有表

转载 作者:IT王子 更新时间:2023-10-29 06:31:04 26 4
gpt4 key购买 nike

使用 Sqlite,我想将一个自动递增的 ID 列添加到以前没有 ID 的现有表中:

import sqlite3
db = sqlite3.connect(':memory:')
c = db.cursor()

c.execute('create table events (int weight, text str)')
c.execute('insert into events values(?, ?)', (1371, 'Test1'))
c.execute('insert into events values(?, ?)', (223, 'Test2'))
c.execute('select * from events'); print c.fetchall()
# [(1371, u'Test1'), (223, u'Test2')]

# add an autoincrementing ID to existing table
c.execute('alter table events add id int not null auto_increment primary key')

如何正确执行?我有这个错误:

sqlite3.OperationalError: near "auto_increment": syntax error

最佳答案

SQLite 表一旦创建就无法使用 alter table 进行显着修改。一个常见的流行建议是创建一个包含现有字段以及额外必填字段的新表,并将您的数据复制/导入到新表中,并可选择删除旧表。

c.execute('create table events_copy(id integer primary key autoincrement, weight integer,str text)')
c.execute('insert into events_copy(weight, str) select weight, str from events')
c.execute('drop table events')
c.execute('alter table events_copy rename to events')
c.commit()

关于python - 使用 Sqlite 将自动递增 ID 列添加到现有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36852745/

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