我試圖從刮取的文本構建SQLite數據庫。數據庫中的每一行對應於從列表中獲取的字符串,並且對於每個循環創建另一列並使用新的字符串數據填充。SQLite/python - 在while循環內添加數據列
conn = sqlite3.connect('data.sqlite')
cur = conn.cursor()
cur.executescript('''
DROP TABLE IF EXISTS Data;
CREATE TABLE Data(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
words text)''')
while True
url = 'www.xyz.com'
if url == "break": break
#parse - find tag of interest
html = urllib.request.urlopen(url)
p_s = BeautifulSoup(html,'html.parser')
words = str(p_s.findAll('p',{'id':'p-5'}))
words = strip_tags(words)
words = pd.DataFrame(words)
col_number = col_number + 1
col_name = ('Group', col_number)
cur.execute('''ALTER TABLE Data ADD ? TEXT''', (col_name,))
for i,j in words.iterrows():
cur.execute('''INSERT OR IGNORE INTO Data (col_name)
VALUES (?)''',(j))
conn.commit()
當我運行這段代碼,我得到:
sqlite3.Operational.Error : near "?": syntax error
我要去哪裏錯了?謝謝,我爲我的草率代碼道歉,我是Python的新手!
添加新的數據作爲欄目是可怕的設計。將「新字符串數據」添加爲新行,而不是新列。使用** 1 **附加列'Group'來保存'col_name'的值。使用結果會容易得多。 – alexis