Python CSV导入无法在django中运行

时间:2016-01-14 19:44:09

标签: python django csv

获得此load_data.py文件以将csv数据导入django模型表...但它在终端中不起作用,因为我执行命令" python3 ./load_data.py"它就像load.py甚至没有这样调用一样:

(cost_control_local) juanda@juanda-VirtualBox:~/cost_control_repository/cost_control/csv_data$ python3 ./load_data.py
(cost_control_local) juanda@juanda-VirtualBox:~/cost_control_repository/cost_control/csv_data$ 

这是load_data.py代码:

import csv,sys,os
import django

pathproject = "/home/juanda/cost_control_repository/cost_control"
base_csv_filepath = "/home/juanda/cost_control_repository/cost_control/csv_data"
sys.path.append(pathproject)
os.environ['DJANGO_SETTINGS_MODULE'] = 'config.settings.local'
django.setup()

from cost_control_app.models import Suppliers

def load_suppliers():
    print ("Entering...")
    csv_file = base_csv_filepath + "supplier_data.csv"
    dataReader = csv.reader(open(csv_file, encoding='utf-8'),delimiter=',',quotechar='"')
    #dataReader = csv.reader(open(csv_file), delimiter=',', quotechar='"')
    for row in dataReader:
        if row[0] != 'ID':
            Suppliers.objects.create(
                supplier=row[0],
                supplier_description=row[1]
            )
    print ("Imported correctly")

有什么想法吗?谢谢你的帮助!!

2 个答案:

答案 0 :(得分:1)

您需要在代码底部写下:

if __name__ == "__main__":
    load_suppliers()

选中stackoverflow question以了解详情。

同样引用python doc

  

' main '是顶级代码执行的范围的名称。   从标准中读取时,模块的名称设置为“ main ”   输入,脚本或交互式提示。

     

模块可以发现它是否在主范围内运行   通过检查自己的名称,它允许一个常见的习惯用法   当它作为脚本运行时,有条件地执行模块中的代码   使用python -m但不是在导入时:

答案 1 :(得分:1)

csv_file = base_csv_filepath + "/supplier_data.csv"

添加了/