[英]Insert the data in the sqlite3 database
我需要一些幫助,我創建了一個帶有列的數據庫,以便我可以在數據庫中存儲字符串列表。 現在,我想將數據插入數據庫中,但是它只會將數據存儲在按鈕表中,而不會存儲在程序表中。
當我嘗試這個:
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()
我想在程序表的button_id
列中插入數據ids
,但是當我嘗試執行此操作時,什么也沒有發生。
您能幫我如何在程序表中插入數據嗎?
編輯:當我嘗試這樣做:
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
程序表中什么都沒有插入嗎? 我認為,按照當前插入程序表的方式,從第一個for循環中將有如下行:
channel | title | start_date | stop_date | button_id | description
###########################################################################
chanel1 | title1 | start1 | stop1 | blank | blank
從第二個循環中,您將獲得以下行:
channel | title | start_date | stop_date | button_id | description
###########################################################################
blank | blank | blank | blank | id1 | blank
我認為您可能需要在同一條SQL語句中插入button_id和頻道信息等,如下所示:
cur.execute("INSERT INTO programs(channel, title, start_date, stop_date, button_id)" +
" VALUES(?, ?, ?, ?)", [channel_name, title, start_time, stop_time, button_id])
或者,您可以在第二個循環中使用如下的update語句更新字段:
cur.execute("UPDATE programs SET button_id = ? WHERE title=?",
(button_id, title,) )
其中標題(或其他字段)是表的主鍵,或者首先插入button_id並完成此更新語句:
cur.execute("UPDATE programs SET channel=?, title=?, start_date=?, end_date = ? WHERE button_id = ?",
(channel, title, start_date, end_date, button_id,) )
擴展您的評論的示例:
channel_name = 'PBS'
title = 'planet earth'
start_date = '2015-01-01'
end_date = '2016-01-01'
cur.execute("INSERT INTO programs(channel, title, start_date, stop_date)" +
" VALUES(?, ?, ?, ?)", [channel_name, title, start_time, stop_time] )
#yields:
#channel | title | start_date | stop_date | button_id | description
###########################################################################
#PBS | planet earth | '2015-01-01'|'2016-01-01'| blank | blank
button_id = '1'
title = 'planet earth'
cur.execute("UPDATE programs SET button_id = ? WHERE title=?",
(button_id, title,) )
#yields:
#channel | title | start_date | stop_date | button_id | description
###########################################################################
#PBS | planet earth | '2015-01-01'|'2016-01-01'| '1' | blank
我認為現在的問題是您尚未使用鏈接到程序的button_id。 也許可以使用program.getChannel等使您可以同時插入button_id。 否則,從發布的代碼中,我不確定如何將您的程序“鏈接”到按鈕ID。 program_button中的elem是否具有獲取頻道或獲取標題屬性? 如果是這樣,上述內容可能會更改為:
cur.execute("UPDATE programs SET button_id = ? WHERE title=?",
(button_id, elem.getTitle(),) )
或類似的規定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.