【问题标题】:Python CSV import not working in djangoPython CSV导入在django中不起作用
【发布时间】:2016-01-14 19:44:08
【问题描述】:

得到这个 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")

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

【问题讨论】:

    标签: python django csv


    【解决方案1】:

    你需要在你的代码底部写:

    if __name__ == "__main__":
        load_suppliers()
    

    查看stackoverflow question 了解更多信息。

    也引用python doc:

    'ma​​in' 是顶级代码执行的范围的名称。 从标准读取时,模块的 name 设置为 'ma​​in' 输入、脚本或来自交互式提示。

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

    【讨论】:

    • 抛出这个错误:ValueError: invalid literal for int() with base 10: '\ufeffID'
    • 那么这就是你的脚本中的错误。您需要显示完整的回溯,以便人们诊断您的错误,我们无法仅通过“ValueError”确定问题所在。另外,由于您的程序开始运行,因此不再与此问题相关,因此我建议您关闭此问题并提出另一个问题,以便更多人从中受益。
    【解决方案2】:
    csv_file = base_csv_filepath + "/supplier_data.csv"
    

    添加了/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 2016-08-15
      • 2014-11-09
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      相关资源
      最近更新 更多