首页 > 解决方案 > AttributeError: 模块“”没有属性“命令”

问题描述

在我的 Django 项目中,有一个用于加载 csv 数据的文件(模块)。

project/apps/patients/management/commands/load_patient_data.py

在文件(模块)内部:

import psycopg2
import csv
conn = psycopg2.connect(host='localhost', dbname='patientdb',user='username',password='password',port='')
cur = conn.cursor()

with open(r'apps/patients/management/commands/events.csv') as csvfile:
        spamreader = csv.DictReader(csvfile, delimiter=',' ,quotechar=' ')
        for row in spamreader:
            cur.execute(f"""INSERT INTO patients_event (patient_id, event_type_id , event_value ,event_unit, event_time) VALUES
                  ('{row['PATIENT ID']}','{row['EVENT TYPE']}','{row['EVENT VALUE']}',
                   '{row['EVENT UNIT']}','{row['EVENT TIME']}')""")
conn.commit()

当我运行时:

 python manage.py load_patient_data

错误:

AttributeError: module 'apps.patients.management.commands.load_patient_data' has no attribute 'Command'

有朋友可以帮忙吗?

标签: pythondjangodjango-modelsdjango-rest-frameworkdjango-views

解决方案


load_patient_data.py文件中

写下

from django.core.management.base import BaseCommand, CommandError

class Command(BaseCommand):

    def handle(self, *args, **options):
        import psycopg2
        import csv
        conn = psycopg2.connect(host='localhost', dbname='patientdb', user='username', password='password', port='')
        cur = conn.cursor()
    
        with open(r'apps/patients/management/commands/events.csv') as csvfile:
            spamreader = csv.DictReader(csvfile, delimiter=',', quotechar=' ')
            for row in spamreader:
                cur.execute(f"""INSERT INTO patients_event (patient_id, event_type_id , event_value ,event_unit, event_time) VALUES
                          ('{row['PATIENT ID']}','{row['EVENT TYPE']}','{row['EVENT VALUE']}',
                           '{row['EVENT UNIT']}','{row['EVENT TIME']}')""")
        conn.commit()

然后简单地运行 python manage.py load_patient_data


推荐阅读