2013-09-21 2 views
1

я делаю копию кошки с Need a minimal Django file upload exampleДжанго Выполнение Python скрипт

я изменил view.py с моим кодом, чтобы сбросить файл CSV в базу данных SQLite. Я уже создал таблицу в базе данных sqlite по умолчанию.

import sqlite3 
import csv 
import sys 
from django.shortcuts import render_to_response 
from django.template import RequestContext 
from django.http import HttpResponseRedirect 
from django.core.urlresolvers import reverse 

from myproject.myapp.models import Document 
from myproject.myapp.forms import DocumentForm 

def list(request): 
    # Handle file upload 
    if request.method == 'POST': 
     form = DocumentForm(request.POST, request.FILES) 
     if form.is_valid(): 
      newdoc = Document(docfile = request.FILES['docfile']) 
      newdoc.save() 


    gfile= csv.reader(open(newdoc)) 
    gon = sqlite3.connect("database.sqlite") 
    gon.text_factory = str 
    gon.execute("DELETE FROM abc where rowID > 0 ") 
    gon.executemany("insert into abc values (?, ?, ?, ?, ?)", gfile) 
    gon.commit() 
    gon.close()* 

    return HttpResponseRedirect(reverse('myproject.myapp.views.list')) 
    else: 
     form = DocumentForm() # A empty, unbound form 

    # Load documents for the list page 
    documents = Document.objects.all() 

    # Render list page with the documents and the form 
    return render_to_response(
     'myapp/list.html', 
     {'documents': documents, 'form': form}, 
     context_instance=RequestContext(request) 
    ) 

мой код, начиная с первого введением gfile

Ошибка @ строка 20: Принуждение к Юникоду: нужна строка или буфер, Обнаружило пожалуйста, помогите

+0

'newdoc' - это« Документ ». 'open()' принимает имя файла, которое является строкой. –

ответ

1

Вы передаете Document экземпляр до open. Вместо этого вы должны передать файл, который был загружен непосредственно на csv.reader:

gfile = csv.reader(request.FILES['docfile']) 
+0

спасибо, кажется, он будет работать, теперь он застрял на таблице базы данных. ошибка: строка 23: нет такой таблицы abc –

+0

большое спасибо, проблемы с базой данных решены, я дал полный путь к базе данных, и он работает. еще раз спасибо за ваше великое руководство –

Смежные вопросы