2014-04-23 68 views
0

使用Python 2.7.6,如果我想使用存儲在變量中的值(例如整數)將單個記錄添加到SQLite數據庫,我可以執行以下操作:將記錄插入到大量列的SQLite表中

import sqlite3 
w,x,y,z = 0,1,2,3 
conn = sqlite3.connect('mydb.db') 
conn.execute('CREATE TABLE IF NOT EXISTS data (v1 INTEGER, v2 INTEGER, v3 INTEGER, v4 INTEGER)') 
conn.execute('INSERT INTO data VALUES (?,?,?,?)', (w,x,y,z)) 
conn.commit() 
conn.close() 

如果什麼在單個記錄被插入值的數目是大的(例如,100,200,任意?),並且被存儲在一個序列或集合等的列表,隊列,陣列等?有沒有辦法修改上面的INSERT語法,以便我只能指定集合的​​名稱而不是很長的分項列表?在這種情況下使用更方便的任何特定集合類型是什麼?

編輯:上面的代碼示例具有四個值進入表中的四列。對於有關較大數據的問題,假定數據庫表中有多少列與插入值相同。

EDIT2:我想插入一個大集合組成的值的單個記錄。我不想插入許多記錄(例如executemany)。

+0

如何將這些代碼瞭解科拉姆的名字呢? –

+0

嗯,它需要知道嗎?例如。在上面的代碼示例中,INSERT語句不需要列名,因爲列的數量和順序與數據項的數量和順序相匹配。 –

+1

您是否試圖在100列表中插入某些內容?你永遠不應該有一個有很多列的表格;這看起來像是一種設計氣味。 –

回答

1

在你的代碼,(w,x,y,z)是四元組元素;那是你的變數。

你也可以同樣用一個列表,而不是:

my_little_list = [w, x, y, z] 
cursor.execute("...", my_little_list) 
+0

確實。事實上,我對落戶的解決辦法是編程方式生成含有「?的權數的INSERT串,拉數據項爲一個元組,然後把這個字符串和元組作爲參數傳遞給conn.execute()語句。 –