Мне нужна помощь, я создал базу данных с столбцами, чтобы я мог хранить список строк в базе данных. Теперь я хотел бы вставить данные в базу данных, но он будет хранить данные только в таблице кнопок, но не для таблицы программ.Вставьте данные в базу данных sqlite3
, когда я пытаюсь это:
cur = con.cursor()
cur.execute('CREATE TABLE programs(channel TEXT, title TEXT, start_date TIMESTAMP, stop_date TIMESTAMP, button_id TEXT, description TEXT)')
con.commit()
for program in channel.findall('programme'):
cur.execute("INSERT INTO programs(channel, title, start_date, stop_date)" + " VALUES(?, ?, ?, ?)", [channel_name, title, start_time, stop_time])
programs_id = list()
for elem in program_button:
programs_id.append(elem.getId())
programs_id = map(str, programs_id)
#store the id and width of buttons in a database
for ids, width in zip(programs_id, program_width):
cur.execute("INSERT INTO buttons(button_ids, button_width)" + " VALUES(?, ?)", [ids, width])
cur.execute("INSERT INTO programs(button_id)" + " VALUES(?)", [ids])
con.commit()
cur.close()
Я хочу, чтобы вставить данные ids
в столбце button_id
в таблице программ, но когда я пытаюсь его ничто не происходит.
Не могли бы вы помочь мне, как я могу вставить данные в таблицу программ?
EDIT: Когда я пытаюсь это:
for ids, width in zip(programs_id, program_width):
cur.execute("UPDATE programs SET button_id = ? WHERE title=?", ([ids, title]))
Здесь будет хранить данные в неправильных строк.
#yields:
#channel | title | start_date | stop_date | button_id | description
###########################################################################
#BBC One | Tomorrow's Food | '2015-01-01'|'2016-01-01'| 3003 | blank
#BBC One | BBC News at Ten | '2015-01-01'|'2016-01-01'| 3056 | blank
#BBC One | South E Today | '2015-01-01'|'2016-01-01'| 3125 | blank
#BBC One | A Question of S | '2015-01-01'|'2016-01-01'| 3006 | blank
#BBC One | Film 2016 | '2015-01-01'|'2016-01-01'| 3007 | blank
Это должно быть так:
#yields:
#channel | title | start_date | stop_date | button_id | description
###########################################################################
#BBC One | Tomorrow's Food | '2015-01-01'|'2016-01-01'| 3003 | blank
#BBC One | BBC News at Ten | '2015-01-01'|'2016-01-01'| 3004 | blank
#BBC One | South E Today | '2015-01-01'|'2016-01-01'| 3005 | blank
#BBC One | A Question of S | '2015-01-01'|'2016-01-01'| 3006 | blank
#BBC One | Film 2016 | '2015-01-01'|'2016-01-01'| 3007 | blank
Большое спасибо за это, но когда я пробую этот «cur.execute (« UPDATE program SET button_id =? », ([Ids])), он будет обновлять одни и те же данные в каждой строке базы данных, поэтому как я могу обновлять данные в таблице без повторения, поскольку я использую их в цикле? – Rob
Посмотрите на нижнюю часть ответа, я изменил его, чтобы отразить ваш комментарий.Основная проблема - это предложение WHERE в команде SQL обновления. –
Я не думаю, что вы понимаете, что я пытаюсь сказать. В нижней части моего вопроса, который я отредактировал, вы увидите, что данные 'button_id' были обновлены в неправильных строках, которые должны были обновляться в каждой строке, не запутавшись. – Rob