在我的应用程序中,"适配器不支持几何"尝试创建类型字段时会抛出异常," geometry()"。对于我的测试应用程序,我使用sqlite DB(生产将使用postgres):
WIN32_FIND_DATAA FileData = {};
有问题的数据库表是在模块内的类中声明的,并包含几个字段,其中一些字段包含位置数据:
db = DAL('sqlite://storage.sqlite', pool_size = 1, fake_migrate_all= False)
修改
根据Anthony的建议,我已将DAL构造函数调用修改为以下内容:
from gluon.dal import Field, geoPoint, geoLine, geoPolygon
class Info(Base_Model):
def __init__(...):
try:
db.define_table('t_info',
...
Field('f_geolocation', type='geometry()',
label = current.T('Geolocation')),
Field('f_city', type='string',
label = current.T('City')),
...
except Exception as e:
...
它会产生以下错误消息:
db = DAL('spatialite://storage.sqlite', pool_size = 1)
答案 0 :(得分:1)
如果要将几何字段与SQLite一起使用,则必须使用spatialite
适配器,该适配器使用SQLite的SpatialLite扩展:
db = DAL('spatialite://storage.sqlite', pool_size = 1)
请注意,您必须安装了spaceite才能实现此目的。