找不到csv导入Django模型的有效解决方案

2024-09-28 21:52:26 发布

您现在位置:Python中文网/ 问答频道 /正文

这东西太乱了,请容忍我。在

作为将一个大得多的文件导入Django模型的前奏,我想首先使用csv导入来创建较大文件中模型所依赖的外键字段。这两行数据正好是fk的一行。在

这看起来很简单,我在网上看到的所有帖子都让它看起来非常简单。但不是为了我。在

以下是我尝试过的:

  1. 我根据http://mitchfournier.com/2011/10/11/how-to-import-a-csv-or-tsv-file-into-a-django-model/编写了自己的脚本 后来我发现我不得不用Django.设置(). 我最初的博客文章没有提到这一点。它可能是在添加此要求之前编写的。不管怎样,我必须使用Django.设置因为这是一个“独立脚本”。我总是犯很多错误,比如

(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

  1. 为了解决这些问题,我重构了代码,结果遇到了新问题。在

这篇博客文章的字段名按索引号列为行。所以当我最终启动时,我得到了:

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,在那里我很沮丧地看到没有按索引号使用行的示例。在

沮丧的是,我想知道一个定制的管理命令。。。在

  1. 自定义django管理命令 (大炮)malikarumi@Tetuoan2:~/Projects/cannon/jamf$python管理.py我的负载数据3

`Traceback(最近调用最后一次): 重要错误:没有命名的模块加农炮。詹姆夫。埃塞尔.型号'

我多次更改导入,但Python拒绝识别其中任何一个。显然这是因为它只进口一次。我试过了imp.重新加载但那没用。我关闭了终端,重新打开了,但是没有用。我重启了电脑,但还是没用。顺便说一句,这个脚本基于Friendm1在how to import csv data into django models中的答案

  1. 我看了一下Postgres上的副本,但决定把它传下去,因为: a) 它在ORM之外,而且 b) 文档使它看起来像是在引用一个数据库,而不仅仅是一个表。

  2. 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创建表吗?显然,医生说要“运行syncdb”。但我有“无迁移可应用”的问题,即使安装了csvimport2。在

我终于求助于你了。在


Tags: csvdjangonamepydata错误projectsmodule
1条回答
网友
1楼 · 发布于 2024-09-28 21:52:26

我找到了答案:csvkit。http://csvkit.readthedocs.org/en/latest/index.html

它可以完成我需要的一切(将csv转换为json),而且,它有很好的文档记录,目前仍在维护。在

然后,我将其与Django fixture和loaddata命令https://docs.djangoproject.com/en/1.8/howto/initial-data/配对,我很高兴地回到了工作中,压力水平大大降低了。在

仔细看一下Django页面上的json示例,然后按照该示例进行操作,否则会出现错误,但是它确实有效,您还可以要求什么呢?在

相关问题 更多 >