这很麻烦,所以请耐心等待。
作为将更大的文件导入我的Django模型的前奏,我想首先使用csv import来创建较大文件中的模型所依赖的外键字段。这个csv正好是两行,即fk模型的一个实例的标题和数据。
这看起来很简单,我在这里和网上其他地方读到的所有帖子都让它看起来很简单。但不适合我。
以下是我尝试的内容:
(cannon)malikarumi@Tetuoan2:~/Projects/cannon$ python ./load_data_2.py
Traceback (most recent call last):
File "./load_data_2.py", line 3, in <module>
import Django
ImportError: No module named Django
ImportError: No module named essell
Traceback (most recent call last):
File "./load_data_2.py", line 8, in <module>
django.setup()
NameError: name 'django' is not defined
此博客文章的字段名称按索引编号列为行。所以当我最终得到它时,我得到了:
File "/home/malikarumi/Projects/cannon/jamf/essell/management/commands/my_loaddata1.py", line 21, in handle jurisdiction.address = row[1]
IndexError: list index out of range
由于我只有两行,一个实例的标题和数据,我想到可能我需要列而不是行。但这是原始脚本的方式。所以这就把我带到csv上的官方文档,https://docs.python.org/2/library/csv.html,我很沮丧地看到没有按索引号使用行的例子。
感到沮丧,我想知道一个自定义管理命令......
`Traceback(最近一次调用最后一次): ImportError:没有名为cannon.jamf.essell.models&#39;
的模块我多次更改了导入,但是Python拒绝承认它们中的任何一个。显然这是因为它只进口一次。我尝试过imp.reload但是没有用。我关闭了终端并重新打开了,这没有用。我重新启动了计算机并且仍然无法正常工作。顺便说一下,这个脚本是基于Friendm1在how to import csv data into django models
中的回答我在Postgres看了COPY,但决定传递它,因为: a)它在ORM之外,并且 b)文档使它看起来像引用数据库,而不只是表格。
的django-csvimport 对于处于类似位置的所有人的警告,有很多类似的声音应用程序,但有些还没有维护多年。 Django-csvimport最近有更新,但文档很少。我试着像它告诉我的那样做,当然也有错误。然后我想到也许我应该为这件事运行startapp,即使指令没有说明这一点。它可能默默地假设我会知道,而不是完全依赖于所写的内容。但是当我尝试这个时,我得到了:
(cannon)malikarumi@Tetuoan2:~/Projects/cannon/jamf$ python manage.py startapp csvimport
CommandError: 'csvimport' conflicts with the name of an existing Python module and cannot be used as an app name. Please try another name.
(cannon)malikarumi@Tetuoan2:~/Projects/cannon/jamf$ ls
essell jamf manage.py Procfile README.md requirements.txt runtime.txt
注意我在重命名后仍然出现此错误,然后删除了我手动创建的csvimport文件夹。我尝试将其重命名为csvimport2,但这将如何影响程序的其他部分?我不知道这个问题的答案的一个原因是因为,现在我有这个csvimport2应用程序,我在models.py中放了什么? 我应该为csvimport2运行迁移并制作表吗?显然,文档会说&#39;运行syncdb&#39;。但我没有申请迁移。&#39;即使在安装的应用程序中使用csvimport2。
最后,我向你寻求帮助。
答案 0 :(得分:0)
我找到了答案:csvkit。 http://csvkit.readthedocs.org/en/latest/index.html
它完成了我需要的一切(将csv转换为json)等等,它有很好的文档记录,并且目前已经维护。
然后我将它与Django fixtures和loaddata命令https://docs.djangoproject.com/en/1.8/howto/initial-data/配对,我很高兴回到业务中,压力水平大大降低。
仔细查看Django页面上的json示例,并按照该示例进行操作,否则会出现错误,但是它可以正常工作,还有什么可以要求的?