【发布时间】:2023-03-11 08:32:01
【问题描述】:
我正在尝试创建一个包含许多列(大约 4030 列)的 SQL 数据库。因此我不能使用
ALTER TABLE table_name ADD column_name
对于每一列。现在我正在尝试执行多个 ALTER TABLE 操作,但我知道,ADD 分支中没有循环,因此不允许重复。所以我尝试了另一种方法来实现我的表。我试过了,
c.execute('''ALTER TABLE table_name ADD (?) ''',k) #k changes in every iteration
我在下面写的代码。
import scipy.io
import sqlite3
import os
# another irrelevant codes here...
conn = sqlite3.connect('CANBUS.db') #connection to .db
matFile = scipy.io.loadmat('folder/table.mat') #column names comes from here
c = conn.cursor() #cursor function I do not know that function well
c.execute('''CREATE TABLE IF NOT EXISTS table_name (ID integer PRIMARY KEY)''')
for k in matFile:
c.execute('''ALTER TABLE table_name ADD (?) ''',k) #k changes in every loop
我遇到一个基本上是语法错误的错误,我知道在 SQLite 中不允许执行ALTER TABLE table_name ADD (?),k 命令。
控制台中的消息是这样的。如何在单个命令中添加多个列?
c.executemany('''ALTER TABLE table_name ADD (?) ''',k)
OperationalError: near "(": syntax error
感谢您的建议。
【问题讨论】:
-
c.execute('''ALTER TABLE table_name ADD '''+k) -
你为什么要这样建你的表?另外,您是否知道 sqlite 默认最多为 2000 列?您需要更新该限制。
-
不,我不知道这个事实。
-
但真的... 4030 列?您确定这是适合您数据的格式吗?你想做什么?
-
实际上,我有 4030 个不同的信号,每天,信号的值都在变化,新的值也在附加,所以我认为这是创建表格的最佳方式。
标签: python sqlite alter-table