Django使用另一个表

时间:2015-12-27 02:18:59

标签: python mysql django

编辑澄清我的意思:

我试图找到一个方法,使用Django操作从一个数据库表中获取数据,然后在将其插入第二个表之前将其处理为另一个表单。我正在写一种词汇词典,从课堂文本中提取学生的词汇数据。为此,我需要能够从包含内容的表字段中获取单个单词,然后将单词插入另一个表中的单独行中。我已经编写了代码来从第一个数据库表中的记录中提取单个单词,我只需要一个方法将它作为同一个Django操作的一部分放入第二个数据库表中。

我一直在寻找这个问题的答案,但似乎Django操作旨在一次只处理一个数据库表的数据。我正在考虑编写自己的MySQL连接,将单词注入数据库的第二个表中。我想我会先在这里写一下,看看是否有人知道我是否错过了在Django中执行此操作的内置方式。

2 个答案:

答案 0 :(得分:1)

我很确定这种特定的东西没有内置的方法。如果你考虑拼写错误的单词,连字符连接的单词,引号,各种标点符号和unicode字母,单独在文本中查找单个单词是一项相当复杂的任务。

您最好的选择是为每个文本使用正则表达式并手动将匹配保存在第二个模型上。

答案 1 :(得分:1)

休伯特的答案很好,让我朝着正确的方向前进,但我的使用场景要求采用略有不同的方法。以下是我编写的代码中的相关行,用于在处理完成后将处理过的单词集插入到数据库表中:

# 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()而不是 save()表示如果在以后对此操作的源文本进行任何编辑,则会更新字数在数据库中而不是添加全新的数据库行。