我编写了一个烧瓶应用程序,它将用户的高度、眼睛颜色和电子邮件地址保存到postgresql数据库中,然后将他们给我的数据发送给用户。我想设置它,这样用户将得到一封电子邮件,与他们的身高和眼睛颜色的平均人数。
目前,我的高度设置为整数值,眼睛颜色设置为字符串值。
通过测试,我得到了一条错误消息:
sqlalchemy.exc.ProgrammingError:(Kercopg2.ProgrammingError)函数avg(字符变化)不存在,第1行:选择avg(data.color_)作为avg_1 ^提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。1\n来自数据
我相信这是因为我试图从str中获取int数据。有办法这样做吗?假设4个人填写了这张表格,所有4个人都说他们有“蓝色”眼睛。有没有办法让程序将100%的平均值发送给他们?
我的代码如下:
class Data(db.Model):
__tablename__="data"
id=db.Column(db.Integer,primary_key=True)
email_=db.Column(db.String(120), unique=True)
height_=db.Column(db.Integer)
color_=db.Column(db.String(6))
@app.route("/success", methods=['POST'])
def success():
if request.method=='POST':
email=request.form["email_name"]
height=request.form["height_name"]
color=request.form["color_name"]
send_email(email, height, color)
if db.session.query(Data).filter(Data.email_==email).count() == 0:
data=Data(email,height,color)
db.session.add(data)
db.session.commit()
average_height = db.session.query(func.avg(Data.height_)).scalar()
average_color = db.session.query(func.avg(Data.color_)).scalar()
print(average_height)
print(average_color)
return render_template("success.html")发布于 2019-01-30 05:06:40
下面是一个您可以参考的例子:
考虑user_data表有name和eye_color两列
SELECT eye_color, count(*) AS user_count,
COUNT(*) * 100.0/ SUM(COUNT(*)) OVER() as percent
FROM user_data
GROUP BY eye_color;此查询将给出拥有每个有色眼睛的用户的数量和百分比。请这把小提琴四处游玩。您需要在Python应用程序中找到适合这个查询的方法。
https://stackoverflow.com/questions/54419975
复制相似问题