如果在附加表时不存在列,则自动添加列(python pandas)

时间:2015-09-05 12:53:31

标签: python sqlite pandas

我正在写SQL数据库中的行,

但有时会有一个新功能尚未成为SQL数据库中的一列,因此我收到错误。

有没有办法在SQL中写入一行并自动添加新列(如果它尚不存在?)

2 个答案:

答案 0 :(得分:0)

使用Python,您可以执行以下操作:

def add_column_to_table(c, table_name, column_name, column_type):
    for row in c.execute('PRAGMA table_info({})'.format(table_name)):
        if row[1] == column_name:
            # print('column {} already exists in {}'.format(column_name, table_name))
            break
    else:
        # print('add column {} to {}'.format(column_name, table_name))
        c.execute('ALTER TABLE {} ADD COLUMN {} {}'.format(table_name, column_name, column_type))

c = db.cursor()
add_column_to_table(c, 'mytable', 'newcolumn', 'INTEGER')

答案 1 :(得分:0)

假设表格名称为MY_TABLE 并且需要添加默认值= 0的BLOB列MY_COLUMN

hasColumn = 0
for row in self.conn.execute('PRAGMA table_info(MY_TABLE)'):
    if row[1] == 'MY_COLUMN':
        hasColumn = 1
        break


    if(hasColumn == 1):
        self.conn.execute('ALTER TABLE MY_TABLE ADD COLUMN MY_COLUMN BLOOB DEFAULT 0 ')