[英]Populate Sqlite3 column with data from Python list using for loop
我試圖通過使用for循環在列表中的所有項目中迭代並使用該數據填充列,從而在Python中使用sqlite3。 我的以下代碼有望對該問題有所啟發:
import sqlite3 as lite
test_run = ['tommy', 'olga', 'peter', 'lulu']
con = lite.connect("test.db")
cur = con.cursor()
cur.execute('DROP TABLE IF EXISTS test1;')
cur.execute('CREATE TABLE test1(symbol TEXT); ')
for i in test_run:
name = i
print name
cur.executemany('INSERT INTO test1 VALUES(?)',name)
with con:
cur = con.cursor()
cur.execute("SELECT * FROM test1")
rows = cur.fetchall()
for row in rows:
print row
抱歉,這是非常基本的內容,但是我剛剛學習了Python,這是我第一次使用SQL。 當我打印名稱時,這似乎應該可以工作,但是當使用fetchall查看正在填充的內容時,它顯示為:
(u't',)
(u'o',)
(u'm',)
(u'm',)
(u'y',)
(u'o',)
(u'l',)
我在這里閱讀了很多答案,這似乎是實現此目的的正確方法。
我可以在您的代碼中找出以下問題。
cur.executemany
不在循環中。 insert
查詢中只有一個參數要綁定。 無需使用cur.executemany
。 tuple
。 我認為正確的代碼可能看起來像這樣-
for i in test_run:
name = (i,)
print i
cur.execute("INSERT INTO test1 VALUES(?)", name)
還可以在插入查詢之后使用con.commit()
,否則應用程序終止后將無法獲得插入的行。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.