![](/img/trans.png)
[英]how to get repeated integer value from string specific operators in python
[英]Is it possible to get an average integer value from string data from a database?
我編寫了一個flask應用程序,該應用程序需要用戶身高,眼睛顏色和電子郵件地址,並將數據保存到PostgreSQL數據庫中,然后通過電子郵件向用戶發送他們給我的數據。 我想進行設置,以便用戶收到一封電子郵件,其中包含他們的身高和眼睛顏色的平均人數。
目前,我已將height設置為Integer值,並將眼睛顏色設置為字符串值。
測試此錯誤消息:
sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError)函數avg(字符變化)不存在第1行:SELECT avg(data.color_)AS avg_1 ^提示:沒有函數與給定的名稱和參數類型匹配。 您可能需要添加顯式類型轉換。 [SQL:'SELECT avg(data.color_)AS avg_1 \\ nFROM數據'](此錯誤的背景位於: http ://sqlalche.me/e/f405)
我相信這是由於我試圖從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")
您可以參考以下示例:
考慮具有兩列name
和eye_color
user_data
表
SELECT eye_color, count(*) AS user_count,
COUNT(*) * 100.0/ SUM(COUNT(*)) OVER() as percent
FROM user_data
GROUP BY eye_color;
此查詢將給您計數和擁有每只彩色眼睛的用戶的百分比。 請參閱此小提琴來玩耍。 您需要找到一種在Python應用程序中適合此查詢的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.