簡體   English   中英

使用for循環使用來自Python列表的數據填充Sqlite3列

[英]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',)

我在這里閱讀了很多答案,這似乎是實現此目的的正確方法。

我可以在您的代碼中找出以下問題。

  1. cur.executemany不在循環中。
  2. insert查詢中只有一個參數要綁定。 無需使用cur.executemany
  3. 將字符串參數綁定到查詢時,應將字符串轉換為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM