Pro*_*o Q 6 sql sqlite date create-table python-3.x
我有一个数据库,我正在尝试向其中添加一列。此列应保存 type 的信息timestamp
,并且我希望完成后每一行都具有相同的时间戳(当前时间)。
我目前已经尝试过:
cursor.execute('''ALTER TABLE my_table ADD COLUMN time timestamp DEFAULT ?''', (datetime.datetime.utcnow(),))
Run Code Online (Sandbox Code Playgroud)
结果是sqlite3.OperationalError: near "?": syntax error
.
然后我尝试了:
cursor.execute(f'''ALTER TABLE my_table ADD COLUMN time timestamp DEFAULT {datetime.datetime.utcnow()}''')
Run Code Online (Sandbox Code Playgroud)
结果是sqlite3.OperationalError: near "-": syntax error
.
另外,做
cursor.execute(f'''ALTER TABLE my_table ADD COLUMN time timestamp DEFAULT CURRENT_TIMESTAMP''')
Run Code Online (Sandbox Code Playgroud)
结果是sqlite3.OperationalError: Cannot add a column with non-constant default
。
如何添加新列并设置该列中的值?(通过DEFAULT
或其他一些机制。)
GMB*_*GMB 12
SQLite 不允许添加具有非常量值的新列。所以这:
alter table my_table add column my_time timestamp default current_timestamp;
Run Code Online (Sandbox Code Playgroud)
...产生错误:
Cannot add a column with non-constant default
Run Code Online (Sandbox Code Playgroud)
一个简单的选择是重新创建表。假设您有一个名为 的列id
,则如下所示:
create table my_table_new(
id int primary key,
my_time timestamp default current_timestamp
);
insert into my_table_new(id) select id from my_table;
drop table my_table; -- back it up first!
alter table my_table_new rename to my_table;
Run Code Online (Sandbox Code Playgroud)
您可以首先添加新列,然后将表中的每个现有行更新为所需的值:
ALTER TABLE my_table ADD COLUMN time;
UPDATE my_table SET time = CURRENT_TIMESTAMP;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5127 次 |
最近记录: |