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

oewdyzsn  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(280)

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()
ecr0jaav

ecr0jaav1#

我认为您不需要更新查询中的“表”。您可能复制粘贴了它,并将原来使用的表作为“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语句和值进行动态更新。

相关问题