Django - 将CSV文件加载到数据库问题中

时间:2011-11-20 18:32:59

标签: django csv

我有一个由MySQL数据库驱动的Django项目。我向数据库提供了一个包含大约600条记录的CSV文件(通过原始SQL语句)。这很顺利(几乎有Field 'customer_id' doesn't have a default value的错误 - 不知道为什么)。问题是这些记录没有出现在webapp本身。

例如,CSV文件包含大约600条描述客户联系信息的记录的列表。当我启动Django测试服务器并转到客户端联系页面(应列出所有联系人记录 - 600)时,没有任何内容。此外,当我进入管理部分并查看客户联系人记录时,没有任何内容 - 但是它表明在分页按钮旁边总共有600条记录。此外,还有7页(7个分页按钮)的记录 - 当然,任何页面上都没有。

到底是什么?!

修改详情

我尝试导入的文件名为subset_ressy_esc.csv,其中几行如下所示:

R0138,Y,1432 MyRoad Ct,MyCity, MyProv,H0H 0H0,N,100.00,0,1,1
R0140,Y,268 MyStreet Link,MyCity,MyProv,H0H 0H0,N,100.00,0,1,1
R0142,Y,10994 123 St,MyCity,MyProv,H0H 0H0,N,0.00,1,0,0

它们代表的字段(按照上面显示的顺序)是:

systemID (pk), isRessy, systemAddress, systemCity, systemProvince, systemPostalCode, isHoseBibb, servicePreauthAmt, noWorkRequired, SUAuthorized, BDAuthorized

现在isRessyisHoseBibb字段是select样式字段,用户从下拉列表中选择,noWorkReqdSUAthBDAuth是布尔人。 serviceAmt是小数(美元)amt。

要导入此数据,我会进入mySql解释器mysql -u garfonzo -p并运行以下命令:

mysql> load data local infile '/home/garfonzo/subset_ressy_esc.csv' into table systems_system fields terminated by ',' lines terminated by '\n' (systemID, isRessy, systemAddress, systemCity, systemProvince, systemPostalCode, isHoseBibb, servicePreauthAmt, noWorkRequired, SUAuthorized, BDAuthorized);
Query OK, 684 rows affected, 1 warning (0.01 sec)
Records: 684  Deleted: 0  Skipped: 0  Warnings: 0

mysql> show warnings;
+---------+------+-----------------------------------------------------+
| Level   | Code | Message                                             |
+---------+------+-----------------------------------------------------+
| Warning | 1364 | Field 'systemOwner_id' doesn't have a default value |
+---------+------+-----------------------------------------------------+

当我执行SELECT * FROM systems_system时,我会使用所有正确的数据吐出所有684条记录。当我打开django项目时,没有列出任何内容,但管理员有7页系统,没有一个系统实际存在 - 只有7页什么都没有。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

有趣。管理员显示正确记录计数的事实意味着表名匹配(这是我的第一个想法)。因此它可以看到应用程序,表格和记录计数。我的猜测是两件事之一:

  1. 您没有为班级定义__str__()__unicode__()方法,或

  2. 您没有正确设置匹配的admin.py类,而是显示一个空白字段。

  3. 我的钱在第一位。

答案 1 :(得分:1)

您确定通过.save()方法实际保存了这些记录吗? 控制台显示什么?我的意思是你试过手动迭代shell吗? (manage.py shell) 最后你试过重启服务器?

管理员不应要求__str____unicode__

答案 2 :(得分:0)

查看字段systemOwner_id的警告没有默认值并没有真正打扰我。但我突然意识到我没有为该字段导入值,并且该字段不能为空。所以,(出于测试目的)我更改了我的模型,以便该字段systemOwner_id可以为null,运行相同的MySQL导入,瞧,所有系统都存在。尼斯!!

感谢您的帮助 - 在此Q& A上完成此操作有助于解决我的问题。

干杯!