如何在Django或DRF中使用csv文件创建动态数据库表

lrpiutwd  于 2022-12-05  发布在  Go
关注(0)|答案(1)|浏览(260)

我将在django中创建一个没有模型的csv文件的数据库表。步骤如下:通过post请求发送csv文件后,将根据csv文件头(名称、大学、分数、总分等)创建一个数据库表。并使用csv文件数据填充。数据库表名称应派生自csv文件名。我搜索了一下,但没有找到好的解决方案。任何帮助都将不胜感激。下面是我的代码来读取csv文件类UploadProductApiView(generics.CreateAPIView):serializer_class =文件上载序列化程序

def post(self, request, *args, **kwargs):
    serializer = self.get_serializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    file = serializer.validated_data['file']
    decoded_file = file.read().decode()
    # upload_products_csv.delay(decoded_file, request.user.pk)
    io_string = io.StringIO(decoded_file)
    reader = csv.reader(io_string)
    for row in reader:
        print(row)
c9x0cxw0

c9x0cxw01#

你可以创建一个动态的Django模型:https://code.djangoproject.com/wiki/DynamicModels
使用这种方法,您可以动态创建模型,并通过运行以下代码片段

from django.core.management import call_command
call_command('makemigrations')
call_command('migrate')

您可以将模型迁移到数据库中并使用它来访问和存储csv数据。

python manage.py inspectdb TableName > output.py

将路径设置为您希望生成模型文件的位置。我不确定此命令是否会覆盖或追加到当前文件,因此您可以尝试追加到当前文件,如果不起作用,请创建一个临时文件并将输出写入其中,然后将其追加到您所需的models.py文件:https://www.geeksforgeeks.org/python-append-content-of-one-text-file-to-another/
完成整个过程后,您将生成、执行迁移,并在www.example.com中创建模型models.py以便在服务器重新启动时使用。

相关问题