为了账号安全,请及时绑定邮箱和手机立即绑定

在搜索期间访问 Flask-Sqlalchemy 查询中的表变量

在搜索期间访问 Flask-Sqlalchemy 查询中的表变量

暮色呼如 2021-07-30 16:47:14
我正在使用 Flask 和 Flask-SQLalchemy 以及 Flask-Login 编写一个 RESTful api。我有一个Users初始化的模型,如下所示:class Users(UserMixin, db.Model):    __tablename__ = "users"    # STATIC Standard required info    id = db.Column("id", db.Integer, primary_key = True)    public_id = db.Column("public_id", db.String(50), unique = True)    email = db.Column("email", db.String(50), unique = True)    username = db.Column("username", db.String(20), unique = True)    password = db.Column("password", db.String(20))    # DYNAMIC Standard required info    lat = db.Column("lat", db.Float)    lon = db.Column("lon", db.Float)表中还有其他元素,但纬度和经度最相关。我有一个方法distanceMath()可以接收当前登录用户的经纬度,以及表格中的经纬度来计算它们之间的距离。但我无法弄清楚如何在以下调用期间访问表值distanceMath而不会收到语法错误:lat1 = current_user.latlon1 = current_user.lonusers = Users.query.filter(distanceMath(lat1, Users.lat, lon1, Users.lon)==1)    output = []    for user in users:        data = {}        data["username"] = user.username        output.append(data)    return str(output)以防万一,distanceMath方法如下:# Haversine Distancedef distanceMath(lat1, lat2, lon1, lon2):    distance = math.acos(math.sin(math.radians(lat1))*math.sin(math.radians(lat2))) + math.cos(math.radians(lat1))*math.cos(math.radians(lat2))*math.cos(math.radians(lon1)-math.radians(lon2))    return distance错误的一个例子是:TypeError: must be real number, not InstrumentedAttribute在我的理解中,这基本上是在说,User.lat并且User.lon不指浮点数甚至数字,而是指表的属性。我的问题是如何实际使用 lat 和 lon 等于(在数据库中它们分别等于 37.7 和 -122.4)。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号