2015-11-05 180 views
0

我試圖導入此CSV文件。它完美地運行在我本地的django上。但是,它不會導入到我的實際服務器/生產版本中。在生產服務器上導入數據時出錯 - 本地正常工作

我在服務器上使用SQLite(本地)和Postgres。但是我看不到會影響它的任何設置。有什麼建議麼?

我的導入文件:

import sys, os 
import django 

sys.path.append('/srv/apps/stashdDB/code') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'stashdDB.settings' 

django.setup() 

import stashd.models as m 




import csv 

l = list(csv.reader(open('test_data.csv', encoding='utf-8', errors='ignore'))) 

Gender_CHOICES = { 
    'Male': 1, 
    'Female': 2, 
    'Unisex': 3, 
} 

Stock_CHOICES = { 
    'in stock': 1, 
    'low stock': 2, 
    'out of stock': 3, 
    'discountinued': 4 
} 

for i in l[1:]: 
     cat = m.Category.objects.get_or_create(category_name = i[4])[0] 
     prod = m.Product(
      name = i[0], 
      link = i[1], 
      description = i[6], 
      brand = i[7], 
      gender = Gender_CHOICES[i[8]] if i[8] in Gender_CHOICES else 3, 
      store = m.Store.objects.get_or_create(store_name = i[2])[0] 
      ) 
     prod.save() 
     var = m.Variation(
      product = prod, 
      variation = "default" 
      ) 
     var.save() 
     img = m.Image(
      variation = var, 
      image = i[5] 
      ) 
     img.save() 
     size = m.Size(
      variation = var 
      ) 
     size.save() 
     price = m.Price(
      variation = var, 
      price = float(i[3]) 
      ) 
     price.save() 
     stock = m.Stock(
      size = size, 
      stock = Stock_CHOICES[i[9]] if i[9] in Stock_CHOICES else 4 
      ) 
     stock.save() 
     prod.category.add(cat) 

錯誤:

Traceback (most recent call last): 
    File "update_fromcsv.py", line 18, in <module> 
    l = list(csv.reader(open('test_data.csv', encoding='utf-8', errors='ignore'))) 
TypeError: 'errors' is an invalid keyword argument for this function 
+0

你在服務器上安裝了Django嗎?錯誤是因爲它找不到Django包。 如果您安裝了virtualenv,服務器上的virtualenv是否處於活動狀態? –

+0

檢查是否安裝了django或在生產環境中激活了虛擬環境。 –

+0

對。而且,在項目目錄中總是保留一個requirements.txt。每次在安裝任何軟件包後在本地進行更新時,請繼續更新它。 –

回答

1

您正在使用不同版本的Python的本地和服務器上。

本地,你很可能使用Python 3,爲open()

open(file, mode='r', buffering=-1, encoding=None, errors=None, 
    newline=None, closefd=True, opener=None) 

在服務器上,因爲Python 3.4 knowserrors說法,你可能運行Python 2,因爲在in Python 2.7errors參數不存在

open(name[, mode[, buffering]]) 

這就是爲什麼錯誤消息抱怨'錯誤'是「無效」的原因。

相關問題