0

ここで、2つの郵便番号間の距離を計算するためのZipCodeデータベースプロジェクトについての言及を見ました。Djangoとsqlite3を使用して、csvファイルをデータベースに正常にアップロードできました。ただし、現在、郵便番号自体以外ではクエリを実行できません(市と州は機能しません)。csvファイルに市や州の引用符が含まれているためだと思ったので、すべての引用符を取り出してファイルをアップロードしてみました。運がない。次に、エンコードがオフになっていると思ったので、utf-8でエンコードされていることを確認して再度アップロードしました。繰り返しますが、運がありません。誰かがこのデータベースの経験がありますか?データベースはhttp://zips.sourceforge.net/ にあり、ロードする方法はhttp://mitchfournier.com/2011/10/11/how-to-import-a-csv-orに基づいています。 -tsv-file-into-a-django-model / やりたいことにはやり過ぎのようだったので、geodjangoを避けました。どんな助けでも大歓迎です。

コードは次のとおりです。

私の郵便番号クラスの場合:

class ZipCode(models.Model):
    zipcode=models.CharField(max_length=5)
statecode=models.CharField(max_length=2)
lat=models.CharField(max_length=9)
long=models.CharField(max_length=9)
city=models.CharField(max_length=64)
state=models.CharField(max_length=32)
create_date=models.DateTimeField(default=datetime.datetime.now)
def __unicode__(self):
    return "%s %s %s" %(self.city,self.statecode,self.zipcode)

次に、説明のクラスがあります。ここでは、都市と州を郵便番号に変換します。理想的には

class Descriptions(models.Model):
name=models.CharField(max_length=50)
website=models.CharField(max_length=50,blank=True)
street1=models.CharField(max_length=50,blank=True)
street2=models.CharField(max_length=50,blank=True)
city=models.CharField(max_length=50,blank=True)
state=models.CharField(max_length=50,blank=True)
zip=models.CharField(max_length=5,blank=True)
description=models.TextField()
areas_related=models.TextField()
add_area=models.CharField(max_length=50,blank=True)
federal=models.NullBooleanField(null=True)
def get_zip(self):
    if self.city and self.state:
        real_zip=ZipCode.objects.filter(statecode=self.state) ####note this is not the real query I want to do, but even this returns None
                    ###alternatively, if I do (zip=self.zipcode) I will get an object returned
        return real_zip
    def __unicode__(self):
    return u'%s %s %s %s %s %s %s %s %s %s %s' %(self.name,self.website,self.street1,
    self.street2,self.city,self.state,self.zip,self.description,self.add_area, self.federal, self.get_zip())

アップロードファイルの場合:

csv_filepathname='/Users/sam/Documents/service/mysite/zips.csv'
your_djangoproject_home='/Users/sam/Documents/service/mysite/mysite'

import sys,os

sys.path.append(your_djangoproject_home)
os.environ['DJANGO_SETTINGS_MODULE']='settings'

from southtut.models import ZipCode

import csv
dataReader = csv.reader(open(csv_filepathname), delimiter=',', quotechar='"')
for row in dataReader:
    if row[0]!='ZIPCODE':
        zipcode=ZipCode()
        zipcode.zipcode=row[0]
        zipcode.statecode=row[1]    
        zipcode.lat=row[2]          
        zipcode.long=row[3]
        zipcode.city=row[4]     
        zipcode.state=row[5]            
        zipcode.save()
4

1 に答える 1

0

別のデータベースを使用しました。私が持っていたものが機能していなかった理由についてはまだわかりません。

于 2012-10-31T20:40:43.917 に答える