db.execute(更新表)不使用Python

db.execute(更新表)不使用Python,python,sql,flask,sqlalchemy,Python,Sql,Flask,Sqlalchemy,SELECT命令正在工作 engine = create_engine("postgresql://user:password@localhost:5432/table") db = scoped_session(sessionmaker(bind=engine)) username = db.execute( "SELECT person.username FROM person join contact0 ON person.id=co

SELECT命令正在工作

engine = create_engine("postgresql://user:password@localhost:5432/table")
db = scoped_session(sessionmaker(bind=engine))

username = db.execute(
            "SELECT person.username FROM person join contact0 ON person.id=contact0.id WHERE email = 
:address", {"address": address}).fetchall()
     
password = request.form.get("password")
password = generate_password_hash(password)
这个命令没有更新,我得到一个编程错误,它假设SQL命令有语法错误

我的语法错误可能是什么

        db.execute("UPDATE TABLE person SET password = :password VALUES (:password) WHERE username = 
:username", {"password": password, "username": username})
        db.commit()
我认为在更新查询中不需要“表”。您可能会复制粘贴的表和原始使用的表作为“your_TABLE”的占位符

试试这个

db.execute("UPDATE person SET password = :password WHERE username = :username", {"password": password, "username": username})
db.commit()

另外,由于您使用的是SQLAlchemy,因此可以使用
query=person.update(**values)
语句,该语句可以通过
query.where(getattr(person.c,k)==v)
进行扩展,以动态更新任意数量的where语句和值。

我不是!它们是散列的。第一个框的最后一行是我对更新密码进行哈希运算的地方。
VALUES(:password)
子句不属于更新语句。只要把它取下来。@GordThompson我试着这么做,但又做了一次。下面是我获取sqlalchemy.exc.ProgrammingError的错误:(psycopg2.ProgrammingError)无法调整类型“RowProxy”。语句仍然不正确。db.execute(“更新表person SET password=:password其中username=:username”,{“password”:password,“username”:username})什么是
类型(username)
?如果它是一个
列表
,那么什么是
类型(用户名[0])
?这在一定程度上有所帮助!用户名是一个字典,我写了用户名[0],错误切换到这个((RowProxy类型的对象不是JSON serializable))这个错误似乎更合理)我尝试了这个!db.execute(“updateperson SET password=:password,其中username=:username”,{“password”:password,“username”:username})这是一个命令,我也做了同样的事情,并为命令添加了值(:password)。仍然有一个错误。从SQL中提取凭据让我很痛苦,但我不断收到错误的查询。请尝试使用该命令:异常除外,显示为e,并向我们展示e所说的内容。这应该真的有用。。。