在python中导入csv数据

时间:2014-07-25 20:53:31

标签: python django csv

我正在尝试从从URL下载的csv将数据导入数据库。 csv大100MB。

def get_csv_data():
   url = 'http://dati.ur.gov.lv/register/register.csv'
   response = urllib2.urlopen(url)

   cr = csv.reader(response, delimiter=';', quotechar='"')

   for row in cr:
       if row[0] != 'regcode':
          print row[2]
          ur = Ur()
          ur.regcode=row[0]
          ur.sepa=row[1]
          ur.name=row[2]
          ur.name_before_quotes=row[3]
          ur.name_in_quotes=row[4]
          ur.name_after_quotes=row[5]
          ur.without_quotes=row[6]
          ur.regtype=row[7]
          ur.regtype_text=row[8]
          ur.type=row[9]
          ur.type_text=row[10]
          ur.registered=row[11]
          ur.terminated=row[12]
          ur.closed=row[13]
          ur.address=row[14]
          ur.adressid=row[15]
          ur.region=row[16]
          ur.city=row[17]
          ur.atvk=row[18]
          ur.reregistration_term=row[19]
          ur.uri=row[20]
          ur.save()

我只通过两行然后获得500错误代码。什么是错的,我该怎么做?

2 个答案:

答案 0 :(得分:1)

500 HTTP response code是服务器不在您身边的问题:

  

以数字“5”开头的响应状态代码表示案例   服务器知道它有错误或无法执行   执行请求。除了响应HEAD请求时,   服务器应该包含一个包含错误解释的实体   情况,以及是暂时还是永久的情况。用户   代理商应该向用户显示任何包含的实体。这些回应   代码适用于任何请求方法。

FWIW,您可以更好地使用page = response.read()下拉整个网页,然后使用cr = csv.reader(page.splitlines(), delimiter=';', quotechar='"')检索后循环遍历这些行。

答案 1 :(得分:0)

500是内部服务器错误,这意味着安全设置阻止访问或数据库已损坏且您无法读取。检查安全设置,看看您是否能够通过网站查询数据库。