2015-12-27 27 views
0

編輯的內容,澄清了我的意思修改數據庫表:Django的方式使用另一個表

我試圖找到使用Django的要採取的行動從一個數據庫表中的數據,然後將其加工成的方法在將其插入第二個表之前,使用不同的形式。我正在寫一種詞彙詞典,從他們的課堂文本中提取有關學生詞彙的數據。爲此,我需要能夠從包含內容的表字段中獲取單個單詞,然後將單詞插入另一個表中的單獨行中。我已經編寫了代碼來從第一個數據庫表中的記錄中提取單個單詞,我只需要一種方法將它作爲同一個Django操作的一部分放入第二個數據庫表中。

我一直在尋找這個答案,但它似乎Django操作被設計爲一次只處理一個數據庫表的數據。我正在考慮編寫我自己的MySQL連接,將這些詞注入數據庫的第二個表中。我以爲我會先寫在這裏,但看看是否有人知道我是否缺少在Django中執行此操作的內置方法。

+0

很顯然,django不夠智能,無法從文本中找出單個詞。事實上,我認爲任何框架都不會有像內置的那樣的東西。那爲什麼要用django?爲什麼不寫一些python腳本來做到這一點? –

+0

你誤解了我的問題,所以也許我沒有把它寫得夠清楚。我不需要Django將文本分解成單獨的單詞。正如你所說,我可以寫我自己的Python腳本來做到這一點。我的問題是,Django是否有辦法將文本處理成單獨的單詞列表後,將單詞放入不同的數據庫表中。 –

回答

1

Hubert的回答很好,讓我朝着正確的方向前進,但是我的使用場景需要稍微不同的方法。下面是我寫的,用於插入處理的詞語集到數據庫表中的代碼相關線路,他們都已經被處理之後:

# Update or create the words and counts in the Words table. 
for word, count in words.iteritems(): 
    Word.objects.update_or_create(word=word, defaults={'count': count})          

在函數調用words.iteritems()是一本字典包含單詞作爲關鍵字並計爲值。 在賦值的左側字update_or_create()是指在數據庫表

使用update_or_create(場)代替保存()意味着如果任何編輯做是爲了此操作的源文本在以後的日期中,字數將在數據庫中更新,而不是完全新添加的數據庫行。

1

我很確定沒有內置的方式來實現這個特定的功能。如果考慮拼寫錯誤的單詞,連字符連接詞,引號,各種標點符號和unicode字母,單獨在文本中查找單個單詞是一項相當複雜的任務。

你最好的選擇是使用每個文本的正則表達式,並手動保存第二個模型的匹配。

+0

我已經編寫了將文本分成單詞的代碼。我現在需要的是用於獲取該數據並將其插入第二個數據庫表的Django方法。我目前的問題似乎是,Django模型只能設計爲一次處理一個數據庫表,而不是在兩個單獨的表之間傳輸數據。我可能會錯過一些東西。 我很抱歉沒有更清楚地瞭解我正在尋找的具體信息。 –

+0

每個django模型都代表一個表格。所以這取決於你想如何保存字典。如果只有兩列有文本,那麼你需要一個帶有兩個文本字段的模型。 –

+0

它是兩個SEPARATE數據庫表中的兩個字段。模型似乎一次只能與一個表互動。我正在尋找兩個表格之間的交互,因此我猜測兩個模型。這是必要的原因是因爲原始文本數據來自一個記錄,但文本包含幾個不同的單詞,因此插入它們會導致多個記錄。 Django中的兩個表之間是否可以進行這種交互?如果不是,那麼我會繼續編寫我自己的MySQL連接,用於在數據庫中插入單詞。 –