[英]CoreData sqlite3 db - populating timestamp column with python script
[英]populating sqlite3 db with links in python
我正在嘗試使用帶有字符串列表(鏈接)的單列填充數據庫。 我刮掉了列表,在將其發送到數據庫之前,我必須修改每個鏈接。 這是代碼:
for event in events:
link_url = "https://www.website.com"+event+"#all"
c.execute("INSERT INTO table (links) VALUES(?)", link_url)
如果我修改變量並發送一個元組,我可以讓它工作,如下所示:
for event in events:
link_url = "https://www.website.com"+event+"#all"
link = (link_url,)
c.execute("INSERT INTO seriea (links) VALUES(?)", link_url)
但我不想使用這個解決方案,因為我想稍后得到一個字符串列表:
c = connection.execute('select links from table')
list_of_urls = c.fetchall()
但這給了我一個元組列表。
這是我遇到的錯誤: ProgrammingError: 提供的綁定數量不正確。 當前語句使用 1,提供了 80 個。
我認為這是因為字符串字符被計算在內(實際上更多,但我注意到“提供”之前的數字隨着鏈接的變化而變化)
我不想使用此解決方案,因為我想稍后獲取字符串列表:
c = connection.execute('select links from table') list_of_urls = c.fetchall()
但這給了我一個元組列表。
執行 select 時獲得的元組列表與插入數據的方式無關。 請記住,表格有兩個維度:
ID | 鏈接 | 某物 | 別的 |
---|---|---|---|
1 | “富” | “酒吧” | “巴茲” |
2 | “曲子” | “皰疹” | “德普” |
當您執行 select 時,您會得到一個與此處的行相對應的列表。 但每一行都有多個字段: id
、 links
、 something
和else
。 列表中的每個元組都包含表中每個字段的值。
如果您只想將 URL 作為字符串列表,則可以使用列表推導或類似方法:
c = connection.execute('select links from table')
list_of_rows = c.fetchall()
list_of_strings = [row[0] for row in list_of_rows]
# ^ index of first element in
# ^^^ the tuple of values for each row
請注意,插入數據時必須提供元組或其他序列:
對於 qmark 樣式,
parameters
必須是一個序列。 對於命名樣式,它可以是序列或字典實例。 序列的長度必須與占位符的數量匹配,否則會引發ProgrammingError
。 如果給定一個dict ,它必須包含所有命名參數的鍵。
您可能以錯誤的方式思考它的元組部分。 您不需要傳入 URL 元組,您需要傳入參數元組。 你不是說“鏈接列應該包含這個元組”,而是“這個元組包含足夠的值來填充這個查詢中的占位符”。
我會這樣重寫:
for event in events:
link_url = "https://www.website.com"+event+"#all"
c.execute("INSERT INTO seriea (links) VALUES(?)", (link_url,))
這樣您就可以有多個參數,例如
c.execute(
"INSERT INTO seriea (links, some, other) VALUES(?, ?, ?)",
(link_url, foo, bar),
)
當前語句使用 1,提供了 80 個。
我認為那是因為字符串字符被計算在內
是的,這很可能是正在發生的事情。 c.execute()
期望接收一個序列,字符串是一個字符序列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.