背景を簡単に説明します。ポイントからの距離で多数の場所を並べ替える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にリクエストを送信しています。