gpt4 book ai didi

python - 如何使用谷歌应用引擎更新数据存储中的列名

转载 作者:行者123 更新时间:2023-11-28 18:46:10 33 4
gpt4 key购买 nike

我有一个列名地理编码的实体,它最初是空值。我想更新数据存储中地理编码列的值。

我尝试使用下面的代码片段,但没有成功。请帮忙。提前致谢。

数据存储

class doctor(db.Model):
doctorUser=db.UserProperty()
geocode=db.GeoPtProperty()

更新医生列的函数

def post(self):
user=users.get_current_user()
q=doctor.all().filter("doctorUser =",user)
if q.count()==1:
lat=self.request.get('lat')
lng=self.request.get('long')
code=str(lat)+", "+str(lng)
q[0].geocode=code
q[0].put()

已解决

这是我所做的更改并且有效!

def post(self):
user=users.get_current_user()
q=doctor.all().filter("doctorUser =",user)
qo=q.get()
if q.count()==1:
lat=self.request.get('lat')
lng=self.request.get('long')
code=str(lat)+", "+str(lng)
qo.geocode=code
qo.put()

最佳答案

您正在尝试处理查询对象,您需要获取或遍历查询或使用 get() 获取结果。您正在使用的查询可能会返回多个结果。除非您在其他地方有逻辑来确保 doctorUser 的唯一值。

在进入循环之前,还要从请求中获取纬度/经度。

您还应该停止根据列名称考虑数据存储和模型。这些是实体的属性,应用引擎数据存储区中没有列。

虽然您更新原始问题的解决方案可能有效,但效率低下。例如,你得到一个实体然后执行一个 count() 重新运行相同的查询。我重写了它以提高效率,但是仍然存在潜在的问题(例如匹配 doctorUser = user

的多个记录
def post(self):
user=users.get_current_user()

if user: # if user not logged in user will be None

qo=doctor.all().filter("doctorUser =",user).fetch(10)

if len(go) > 1:
raise ValueError('More than one doctorUser matches')

if go:
lat=self.request.get('lat')
lng=self.request.get('long')
code=str(lat)+", "+str(lng)
qo.geocode=code
qo.put()

关于python - 如何使用谷歌应用引擎更新数据存储中的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19779266/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com