2016-03-02 82 views
2

我想通過編程一個遊戲(基於文本)來學習Python和SQLite。我想插入數據到SQLite數據庫。我創建了玩家使用SQL多行輸入的隨機輸入創建列表

c.execute('''CREATE TABLE player(ID_Player INTEGER PRIMARY KEY, Age INT, Name VARCHAR, Position VARCHAR, Skill INT, Value INT)''') 

一個TABEL現在我想插入n個條目此表。對於每一列,我想應用一個函數來確定應該輸入的內容。

  • 年齡:randint(18,33))
  • 的名稱:names.get_full_name(性別= '男')
  • 的位置:random.choice(位置)
  • 的技能: randint(50,100)
  • 的價值:randint(500000,5000000)

如果我手動創建列表,它看起來像這樣

multi_lines =[ (25,'Playern Name1','TW',95,45000000), 
       (26,'Playern Name2','ST',75,3500000), 
       (32,'Playern Name3','IV',85,25000000),] 

比我能執行他們,他們被插入到我的數據庫與功能c.executemany('INSERT INTO player(age, name, position, skill, value) VALUES (?,?,?,?,?)', multi_lines) 我試圖確定輸入奧姆c.executemany但這並沒有工作。

c.executemany('INSERT INTO player(Age, Name, Position, Skill, Value) VALUES (?,?,?,?,?)',\ 
       (randint(18,33),names.get_full_name(gender='male'),random.choice(positions),randint(50,100), randint(500000,50000000))) 

接下來,我試圖讓許多目錄,把它們放到一個空列表:

lst = [] 
positions = ['TW', 'IV', 'MF', 'ST'] 

for i in range(2): 
    lst.append(randint(18,33)) 
    lst.append(names.get_full_name(gender='male')) 
    lst.append(random.choice(positions)) 
    lst.append(randint(50,100)) 
    lst.append(randint(500000,5000000)) 

print lst 

的這個輸出是[19, u'Ricardo Moore', 'ST', 68, 3298618, 26, u'Carl Cole', 'ST', 92, 3380302],但是,我想創建像multi_lines輸出。什麼可能是這樣做的邏輯方法?或者更具體地說,我如何創建一個列表在另一個列表中?

main_list = [ 
    (list_1), 
    (list_2), 
    (list_n) 
] 

回答

1

你需要列出的列表executemany()

positions = ['TW', 'IV', 'MF', 'ST'] 
multi_lines = [[ 
     randint(18,33), 
     names.get_full_name(gender='male'), 
     random.choice(positions), 
     randint(50,100), 
     randint(500000,5000000) 
    ] 
    for i in range(2) 
] 

c.executemany('INSERT INTO player(Age, Name, Position, Skill, Value) VALUES (?,?,?,?,?)', multi_lines) 
+0

謝謝!有效!我幾乎在那裏只是無法弄清楚在哪裏發表聲明。 – Sogomon