1

背景を簡単に説明します。ポイントからの距離で多数の場所を並べ替えるdjangoアプリを作成しようとしています。アプリはEC2サーバーで実行されますが、データベースにRDSを使用したいと思います。PostgreSQLはRDSで利用できないため、MySQLを使用することにしました。

問題:

ビューを実行しようとすると、次のエラーが発生します。

NotImplementedError:距離ストアドプロシージャはmysqlバックエンドでは使用できません。

ビューは次のとおりです。

from django.shortcuts import render_to_response
from models import CampSite
from geopy import geocoders
from django.contrib.gis.geos import *
from django.contrib.gis.measure import D
from django.template import RequestContext

def results(request):
     query = request.GET['q']
     g = geocoders.Google(resource='maps')
     results = []
     geocodes = g.geocode(query, exactly_one=False)
     for geocode in geocodes:
         location, (lat, lon) = geocode
         pnt = fromstr("POINT(%s %s)" % (lon, lat))
         distance_from_point = {'mi':'2000'}
         results.append(CampSite.objects.filter(
            lonlat__distance_lte=(
                    pnt,
                    D(**distance_from_point)
                    )
            ).distance(pnt).order_by('distance')
         )
       return render_to_response('results.html',{'location': location,
             'lat': lat, 'lon': lon, 'results':results[0]},
             context_instance=RequestContext(request))

私が読んだことから、問題はMySQLがOGCに準拠しておらず、GDALを使用して情報を取得できることだと思いますが、それを実装する方法がわかりません。

RDSを使用して、できればMySQLでアプリを動作させる方法を知っている人はいますか?(Herokuは避けたい)

ps私はgeopyを使用してGoogleにリクエストを送信しています。

4

1 に答える 1