2015-11-05 45 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]]) 

这就是为什么错误消息抱怨'错误'是“无效”的原因。

相关问题