Python sqlite, как изменить таблицу добавить Колумб, если не существует - PullRequest
0 голосов
/ 11 июля 2019

Хочу: если столбец не существует, добавить столбец

def tablo_olustur():
    cursor.execute("CREATE TABLE IF NOT EXISTS "+asin+"(Tarih TEXT)")
    con.commit()
tablo_olustur()

def veri_ekle(Satıcı_ismi,Stok_Miktarı):
    cursor.execute("INSERT INTO "+asin+' (Tarih, "{}") values (?,?)'.format(Satıcı_ismi),(currentDT,Stok_Miktarı))
    con.commit()

#def ver_ekle2(Stok_Miktarı):
#    cursor.execute("INSERT INTO "+asin+" (Satıcı_ismi, '{}') values (?,?)".format(currentDT),(Satıcı_ismi,Stok_Miktarı))
#    con.commit()

def sutun_ekle(sutun):
    cursor.execute("ALTER TABLE "+asin+' ADD COLUMN "{}" '.format(sutun))
    con.commit()

Я получаю sqlite3.OperationalError: duplicate column name: xxxx ошибку от python

Ответы [ 2 ]

0 голосов
/ 11 июля 2019

Вы можете попробовать это, если столбец существует, он добавит, если нет, вы можете проверить, существует ли какой-либо столбец с тем же именем в таблице

def sutun_ekle(sutun):
    try:
        cursor.execute("ALTER TABLE "+asin+' ADD COLUMN "{}" '.format(sutun))
        con.commit()
    except:
        cursor.execute("PRAGMA table_info(asin)")
        print cursor.fetchall() #prints the list of existing column header
0 голосов
/ 11 июля 2019

Вам нужно проверить свою таблицу, чтобы увидеть, существует ли столбец:

# replace your_table with your table you want to inspect
existing_cols = [row.column_name for row in cursor.columns(table='your_table')

# check if the column you want to add is in the list
if col_add in existing_cols:
    pass  # do nothing
else:
    # alter table
    # replace your_table with the table you want to alter
    # replace varchar(32) with the data type for the column
    cursor.execute("ALTER TABLE your_table ADD COLUMN {} varchar(32)".format(col_add)
    con.commit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...