如何在sqlite3中添加列?

10 投票
4 回答
28054 浏览
提问于 2025-04-15 21:55

我知道这个问题很简单,但我就是搞不定!我对插入、更新或选择命令没有问题。假设我有一个字典,我想用字典里的列名来填充一个表格,但我在添加列的那一行代码上出了问题,能告诉我哪里错了吗?

##create
con = sqlite3.connect('linksauthor.db')
c = con.cursor()
c.execute('''create table linksauthor (links text)''')
con.commit()
c.close()
##populate author columns
allauthors={'joe':1,'bla':2,'mo':3}
con = sqlite3.connect('linksauthor.db')
c = con.cursor()
for author in allauthors:
    print author
    print type(author)
    c.execute("alter table linksauthor add column '%s' 'float'")%author  ##what is wrong here?
    con.commit()
c.close()

4 个回答

0

这里还有一个选择:

c.execute(
f"""
ALTER TABLE linksauthor 
ADD COLUMN {author} 'float'
""")
3

你在使用字符串来表示列名和类型名。虽然Sqlite对这些比较宽容,但其实你应该用双引号来标记这些标识符。

17

你的括号放错地方了。你可能是想这样写:

c.execute("alter table linksauthor add column '%s' 'float'" % author)

撰写回答