Python 修改Django模型有多难?
我在做地理定位,Django没有点域。因此,我不得不用原始SQL编写代码。Django库GeoDjango不支持以下MYSQL数据库查询(有人能帮我验证一下吗?)Python 修改Django模型有多难?,python,mysql,database,django,geodjango,Python,Mysql,Database,Django,Geodjango,我在做地理定位,Django没有点域。因此,我不得不用原始SQL编写代码。Django库GeoDjango不支持以下MYSQL数据库查询(有人能帮我验证一下吗?) cursor.execute(“从l_标记中选择id,其中\ (GLength(LineStringFromWKB)(LineString(作为二进制(utm))和二进制(PointFromWKB(point(%s,%s‘‘‘‘‘)’)
cursor.execute(“从l_标记中选择id,其中\
(GLength(LineStringFromWKB)(LineString(作为二进制(utm))和二进制(PointFromWKB(point(%s,%s‘‘‘‘‘)’)<%s+精度+%s)\
我不知道为什么GeoDjango库不能在MYSQL数据库中实现这一点。我讨厌编写原始SQL来计算两点之间的距离。有没有一种方法可以为Django创建自己的库来处理这个问题?如果有,有多难?为什么不扩展一个已经存在的类呢?只是好奇,希望我能帮助您指定当然。GeoDjango确实有一个点域 看起来您正在尝试执行dwithin字段查找,但在MySQL(截至2010年4月)上不起作用,但在Postgres中起作用: 类别标签(型号): 点=点域() Tag.objects.filter(point\uu dwithin=(point,D(mi=4))) 小心此类查询,因为它需要表扫描。如果您可以容忍选择矩形区域内的所有点,则可以使用包含查询的边界框: Tag.objects.filter(包含的点=geom)
其中geom是一个多边形。您使用的是哪个版本?在Django 1.2中,有一种新的方法来执行原始SQL。我使用的是1.0,但1.2不稳定?目标是在4月12日发布1.2。可能是这样的:
cursor.execute("SELECT id FROM l_tag WHERE\
(GLength(LineStringFromWKB(LineString(asbinary(utm),asbinary(PointFromWKB(point(%s, %s)))))) < %s + accuracy + %s)\