2011-03-14 63 views
1

我新上传的文件Django的
我有一个MySQL数据库 - 这是我想用一个CSV文件更新。我打算使用MySQL 的LOAD DATA命令我该如何解决它? - 或者,还有更好的方法 ?更新数据库使用Django

我应该如何创建上传表单?

回答

1

您可以使用在Python csv模块来读取文件并遍历行:

import csv 

csv_file = open('path/to/file', 'rb') 
reader = csv.reader(csv_file) 

for column1, column2, column3 in reader: 
    #do something with the data here 

希望帮助!

这部分是显示出一个样品视后续:

#NOT TESTED 
import csv 

from django.shortcuts import render_to_response 

form my_app.forms import MyForm 
from my_app.models import MyModel 

def my_view(request): 
    if request.method == 'GET': 
     form = MyForm() 
    else: 
     form = MyForm(request.FILES, request.POST) 
     if form.is_valid(): 
      the_file = form.cleaned_data.get('the_file_field', None) 
      if the_file: 
       reader = csv.reader(the_file) 
       for column1, column2, column3 in reader: 
        my_model = MyModel.objects.create(column1=column1, \ 
        column2=column2, column3=column3) 
    return render_to_response('my_template.html', {'form' : form}) 
+0

谢谢,我认为这可能是非常有帮助的。如果我不想存储上传的文件 - 即如何从上传的文件中获取数据并绑定到表单上? 另外,我需要将csv信息插入到数据库中。如何编写该视图 – mridul 2011-03-15 20:11:06

+0

您应该能够直接从request.POST集合中引用上传的文件。 (我没有用这个方法测试过,但是用过类似的函数),我会用样本视图发布另一个答案。 – Brandon 2011-03-17 14:18:44

0

要做到这一点使用Django,你最好写一个视图和一个支持模型,它会有一个表单上传你的文件,然后逐行解析文件,以便将信息插入到你的数据库中。