2016-09-26 150 views
0

我正在使用Python和SQLite來操作數據庫。如何使用Python將逗號分隔值拆分爲多行

我有一個SQLite表Movies,看起來像這樣:

| ID    | Country  
+----------------+------------- 
| 1    | USA, Germany, Mexico 
| 2    | Brazil, Canada 
| 3    | Peru 

我想在Country分裂逗號分隔值,並將其插入到另一個表Countries使Countries表看起來像這樣

| ID    | Country  
+----------------+------------- 
| 1    | USA 
| 1    | Germany 
| 1    | Mexico 
| 2    | Brazil 
| 2    | Canada 
| 3    | Peru 

我該怎麼做表中的Country列表和insex將它們轉換成Countries表中的Country列?

根據this post,我無法使用純SQLite完成此任務。我將如何使用Python去解決它?

+0

如果密鑰表是'ID'那麼你顯然不能。順便說一句,請顯示一些代碼,以便我們有一些可以參考你的問題。 –

+1

@barakmanos「ID」列不是主鍵。 –

+0

@CL .:在問題中究竟如此陳述? –

回答

0

使用Python,

cursor.execute("""Select * from Movies""") 
all_data = cursor.fetchall() 
cursor.execute("""CREATE TABLE IF NOT EXISTS Countries 
        (ID TEXT, 
        Country TEXT)""") 
for single_data in all_data: 
    countries = single_data[1].split() 
    for single_country in countries: 
     cursor.execute("""INSERT INTO Countries VALUES(%s,"%s")"""%(single_data[0],single_country)) 
    conn.commit() 
+1

當某個名稱包含報價時,此代碼會被炸燬。該鏈接在SQLite中不適用於任意數量的值。 –

+0

這段代碼看起來像是試圖覆蓋'Movies'表 –

+0

@the_prole:它不覆蓋Movies表。它首先創建Movies_2表格 - >按照要求添加數據 - >刪除電影表格並將Movies_2重命名爲電影 – Harsha