Я написал колбу, которая измеряет рост пользователя, цвет глаз и адрес электронной почты и сохраняет данные в базе данных postgresql, а затем отправляет пользователю по электронной почте данные, которые они мне предоставили.Я хотел бы настроить его так, чтобы пользователь получал электронное письмо со средним числом людей с их ростом и цветом глаз.
В настоящее время я установил высоту как целочисленное значение, а цвет глаз - как строковое значение.
При проверке этого я получил это сообщение об ошибке:
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) функция avg (изменение символов) не существует. LINE 1: SELECT avg (data.color_) AS avg_1 ^ СОВЕТ: ни одна функция не соответствует заданному имени и типу аргумента.Возможно, вам придется добавить явные приведения типов.[SQL: 'SELECT avg (data.color_) AS avg_1 \ nFROM data'] (Справочная информация об этой ошибке: http://sqlalche.me/e/f405)
Я полагаю, это из-за того, что я пытался получить данные 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")