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:「auto_increment」の近く:構文エラー
SQLiteテーブルは、一度作成されると、altertableを使用して大幅に変更することはできません。一般的な一般的な提案の1つは、既存のフィールドと追加の必須フィールドを使用して新しいテーブルを作成し、データを新しいテーブルにコピー/インポートし、オプションで古いテーブルを削除することです。
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()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加